Аргументы конструктора

Я новичок в структуре структуры. Как определить аргументы конструктора для следующего класса с хорошей конфигурацией? Благодаря

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

  }

Ответы

Ответ 1

Для примитивных типов вы бы сказали, как @ozczecho ответил:

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

при условии, что значения известны во время регистрации. Вы можете сделать это так же и для не примитивных типов, но вы теряете гибкость, которую контейнер дает вам таким образом. Лучше определить экземпляр по умолчанию или именованный и использовать его вместо этого (контейнер автоматически разрешит вам экземпляры по умолчанию). Определяя значения по умолчанию, вы можете легко изменить все зависимости от типа приложения, изменив только одну регистрацию.

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

Если зависимость представляет собой конкретный тип с конструктором, имеющим зависимости, которые известны структуре, вам не нужно регистрировать его в контейнере, он будет автоматически разрешен.

Итак, если CloudStorageAccount - это конкретный класс, вам нужно только зарегистрировать его зависимости в Структурной карте.

Ответ 2

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