Unity - смешивать параметр с нормальным разрешением - PullRequest
0 голосов
/ 21 февраля 2019

Как мне указать только один параметр в конструкторе, а остальные добавить как обычно в Unity?

например,

public MyContentStore(string contentPath, IFileSystem fileSystem)
{
}

Я хочу иметь возможность указать содержимоепуть во время выполнения, но в файловую систему автоматически вводится зарегистрированный тип.Я не могу смешать ParameterOverride с ResolvedParameter

1 Ответ

0 голосов
/ 23 февраля 2019

Я хочу иметь возможность указать путь к контенту во время выполнения

Я предполагаю, что это означает во время разрешения.Это должно работать из коробки, вам не нужно ничего смешивать.Просто зарегистрируйте свой тип без какого-либо другого вида, а затем во время разрешения переопределите параметр, который вы хотите

IUnityContainer uc = new UnityContainer();   
uc.RegisterType<IFileSystem, FileSystem>();
uc.RegisterType<MyContentStore>(); 
var ms = uc.Resolve<MyContentStore>(new ParameterOverride("contentPath", "123"));

С другой стороны, если вы захотите указать аргумент при регистрации, это будет невозможнотак как вам нужно указать каждый аргумент.

...