2017-10-06 130 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'命名空间。 –