2

我有下面的代碼,並且想爲通用的每個不同變體註冊一個單身人士。這可能嗎?目前,斷言失敗,因爲它們不是相同的對象類型。使用簡單注射器註冊開放通用單身人士

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)); 
} 

回答

2

只需使用RegisterSingleOpenGeneric

_container.RegisterSingleOpenGeneric(
    typeof(IGenericClass<>), 
    typeof(GenericClass<>)); 
+1

怎麼我沒有看到!非常感謝 :) –