Unity:如何在解析另一个类型时指定使用类型的特定实例

6 .net c# unity-container

我在Unity中尝试以下内容:

我有一个类型与以下构造函数

public Type1(Type2 firstDependency, Type3 secondDependency)
Run Code Online (Sandbox Code Playgroud)

Type1使用Unity 解析时,我想指定Type2要注入的特定实例.此特定实例Type2未在容器中注册.Type3已在容器中注册,应照常解决.

更具体地说,考虑Type1是一个DocumentViewer类.Type2是具体的Document.Type3是一个SpellingChecker.

我希望能够解决DocumentViewerDocument,其仅在运行时知道.可以创建多个DocumentViewer不同的实例Documents.

我怎样才能做到这一点?

REA*_*REW 2

这是我制作的一个简单示例,您可以使用 RegisterInstance 或者可以使用生命周期管理 Claas

static void Main(string[] args)
{
    IUnityContainer container = new UnityContainer();

    container.RegisterType<Type1>();

    container.RegisterInstance<Type2>(new Type2());

    Type1 t = container.Resolve<Type1>();

    Type2 t2 = container.Resolve<Type2>();

    Type3 t3 = container.Resolve<Type3>();

    Console.ReadKey();
}

public class Type1
{
}

public class Type2
{
}

public class Type3
{
    private Type1 t;
    private Type2 t2;
    public Type3(Type1 t, Type2 t2)
    {
        this.t = t;
        this.t2 = t2;
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:我在构造函数中包含了一个带有两个参数的类型,以表明它也可以被解析。