2017-10-06 150 views
0

根據this文檔,我試圖使用IsAssignableFrom方法。不過,我得到以下異常:類型不包含IsAssignableFrom的定義

錯誤CS1061「類型」不包含「IsAssignableFrom」,沒有擴展方法「IsAssignableFrom」接受型「類型」的第一個參數的定義可以發現(你?缺少using指令或程序集引用)

有問題的行是

if (!desiredType.IsAssignableFrom(outputType))

在下面的類

internal class DefaultResolvable : IResolvable 
{ 
    internal IDictionary<Type, Type> TypeContainer { get; set; } 

    public T Resolve<T>() 
    { 
     if(this.TypeContainer == null) 
     { 
      throw new TypeRepositoryEmptyException(); 
     } 

     var desiredType = typeof(T); 
     var outputPair = this.TypeContainer.FirstOrDefault(pair => pair.Key == desiredType); 
     if(outputPair.Key == null || outputPair.Value == null) 
     { 
      throw new CannotResolveTypeException(); 
     } 

     var outputType = outputPair.Value; 
     if (!desiredType.IsAssignableFrom(outputType)) 
     { 
      throw new CannotResolveTypeException(); 
     } 

     return (T)Activator.CreateInstance(outputType); 
    } 
} 

有什麼我在這裏失蹤?爲什麼我得到這個異常?

+0

任何機會瞄準.NET核心是什麼? – Jamiec

+0

您是否使用.Net核心? –

+0

針對.Net標準1.6 – Janushoff

回答

3

在.NET中標準或.Net核心應該叫GetTypeInfo()

if (!desiredType.GetTypeInfo().IsAssignableFrom(outputType)) 
+0

乾杯,不知道我必須這樣做在標準! – Janushoff

+0

@Janushoff,不客氣 –

+0

太棒了,只需要添加'System.Reflection'命名空間。 –