C# 使用简单注入器注册开放通用单例
我有下面的代码,并且想为泛型的每个不同变体注册一个单例。这可能吗?当前,断言失败,因为对象类型不同C# 使用简单注入器注册开放通用单例,c#,.net,dependency-injection,inversion-of-control,simple-injector,C#,.net,Dependency Injection,Inversion Of Control,Simple Injector,我有下面的代码,并且想为泛型的每个不同变体注册一个单例。这可能吗?当前,断言失败,因为对象类型不同 public interface IGenericClass<T> { string GetToString(); } public class GenericClass<T> : IGenericClass<T> { public string GetToString() { return typeof (T).Ful
public interface IGenericClass<T>
{
string GetToString();
}
public class GenericClass<T> : IGenericClass<T>
{
public string GetToString()
{
return typeof (T).FullName;
}
}
[Test]
public void test()
{
var container = new Container();
container.RegisterOpenGeneric(
typeof(IGenericClass<>),
typeof(GenericClass<>));
var instance1 = container.GetInstance<IGenericClass<double>>();
var instance2 = container.GetInstance<IGenericClass<double>>();
//this should assert true
Assert.IsTrue(object.ReferenceEquals(instance1, instance2));
}
公共接口IGenericClass
{
字符串GetToString();
}
公共类GenericClass:IGenericClass
{
公共字符串GetToString()
{
返回typeof(T).全名;
}
}
[测试]
公开无效测试()
{
var container=新容器();
container.RegisterOpenGeneric(
类型(IGenericClass),
typeof(GenericClass));
var instance1=container.GetInstance();
var instance2=container.GetInstance();
//这应该是正确的
IsTrue(object.ReferenceEquals(instance1,instance2));
}
只需使用注册SingleOpenGeneric即可:
\u container.RegisterSingleOpenGeneric(
类型(IGenericClass),
typeof(GenericClass));
我怎么没看到!非常感谢:)