0

我有一个键“MyKey” 它可以有一个值“Key1”或“Key2”。

现在我需要传递给容器“MyKey”和值“Key1”。

这可以在不在容器中创建接口对象的情况下完成吗?

任何方法都可以。

 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 对象的创建。有没有一种方法可以直接传递给键值对中的容器对象

4

2 回答 2

0

您可以使用 ResolverOverrides 在解析时传递对象。请参阅使用覆盖解析对象

Unity 知道如何构造类,因此如果您不想注册接口,则无需注册。你可以这样做:

IUnityContainer container = new UnityContainer();
KeyMode keyMode = container.Resolve<KeyMode>(
    new ParameterOverride("keyMode", "Key1"));
于 2013-11-11T18:51:11.270 回答
0

我猜想在你下面。

        IUnityContainer container = new UnityContainer();
        container.RegisterType<IKeyMode, KeyMode>(new InjectionConstructor("key1"));

        var keyMode = container.Resolve<IKeyMode>();
        Console.WriteLine(keyMode.GetKeyMode());
于 2013-11-07T12:22:47.550 回答