我有一个键“MyKey”它可以有一个值“Key1”或“Key2”。
现在我需要传递给容器“MyKey”并且值为“Key1”。
可以在不在Container中创建Interface对象
的情况下完成此操作任何方法。
public class KeyMode:IKeyMode
{
private string keyMode;
public KeyMode(string keyMode)
{
this.keyMode= keyMode;
}
public string getKeyMode()
{
return keyMode;
}
}
public interface IKeyMode
{
string getKeyMode();
}
KeyMode rcm = new KeyMode("key1");
container.RegisterInstance<IKeyMode>(rcm);
我创建了IUnityContainer对象“容器”和一个类KeyMode和一个接口......我正在创建Keymode对象并将值注册到容器来传递。 而不是KeyMode对象的创建。是否有一种方法可以直接传递给键值对
中的容器对象答案 0 :(得分:0)
我猜想你之后会发生类似事情。
IUnityContainer container = new UnityContainer();
container.RegisterType<IKeyMode, KeyMode>(new InjectionConstructor("key1"));
var keyMode = container.Resolve<IKeyMode>();
Console.WriteLine(keyMode.GetKeyMode());
答案 1 :(得分:0)
您可以使用ResolverOverrides在解决时传递对象。请参阅Resolving Objects by Using Overrides。
Unity知道如何构造类,因此如果您不想这样做,则无需注册接口。你可以这样做:
IUnityContainer container = new UnityContainer();
KeyMode keyMode = container.Resolve<KeyMode>(
new ParameterOverride("keyMode", "Key1"));