StructureMap构造函数参数

时间:2011-04-18 03:39:46

标签: structuremap

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

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

  }

2 个答案:

答案 0 :(得分:19)

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

For<BlobContainer>()
  .Use<BlobContainer>()
  .Ctor<string>("containerName").Is("theContainerName")
  .Ctor<string>("contentType").Is("theContentType");

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

For<CloudStorageAccount>().Use<TheCloudStorageAccountType>();

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

因此,如果CloudStorageAccount是一个具体类,您只需要在结构图中注册它的依赖项。

答案 1 :(得分:3)

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