StructureMap构造函数参数

Gam*_*e99 15 structuremap

我是structureMap的新手.如何使用流畅的配置为以下类定义构造函数参数?谢谢

  public BlobContainer(CloudStorageAccount account
              , string containerName
              , string contentType
              , BlobContainerPermissions blobContainerPermissions)
  {

  }
Run Code Online (Sandbox Code Playgroud)

PHe*_*erg 19

对于原始类型,你会像@ozczecho回答:

For<BlobContainer>()
  .Use<BlobContainer>()
  .Ctor<string>("containerName").Is("theContainerName")
  .Ctor<string>("contentType").Is("theContentType");
Run Code Online (Sandbox Code Playgroud)

只要在注册时知道这些值.对于非基本类型,您也可以这样做,但是您会失去容器以这种方式提供的灵活性.最好定义一个默认或命名的实例,然后使用它(容器会自动为你解析默认实例).通过定义默认值,您可以通过仅更改一个注册来轻松更改应用程序中类型的所有依赖项.

For<CloudStorageAccount>().Use<TheCloudStorageAccountType>();
Run Code Online (Sandbox Code Playgroud)

如果依赖项是具有构造函数的具体类型,而构造函数具有结构图已知的依赖项,则不必将其注册到容器,它将自动解析.

因此,如果CloudStorageAccount是一个具体的类,您只需要在Structure Map中注册它的依赖项.


ozc*_*cho 3

        For<BlobContainer>()
            .HybridHttpOrThreadLocalScoped()
            .Use<BlobContainer>()
            .Ctor<CloudStorageAccount >("account").Is(...)
            .Ctor<string >("containerName").Is(...)
            .Ctor<string >("contentType").Is(...)
            .Ctor<BlobContainerPermissions >("blobContainerPermissions").Is(...);
Run Code Online (Sandbox Code Playgroud)