将简单参数传递给unity Container

时间:2013-11-07 06:41:14

标签: wpf wpf-controls unity-container containers

我有一个键“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对象的创建。是否有一种方法可以直接传递给键值对

中的容器对象

2 个答案:

答案 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"));