类型不包含IsAssignableFrom的定义

时间:2017-10-06 10:04:50

标签: c# .net-standard

根据this文档,我正在尝试使用IsAssignableFrom方法。但是,我得到以下异常:

  

错误CS1061'输入'不包含' IsAssignableFrom'的定义并没有延伸方法' IsAssignableFrom'接受类型'类型'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)

违规行是

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

我在这里缺少什么吗?为什么我得到这个例外?

1 个答案:

答案 0 :(得分:3)

在.Net Standard或.Net Core中,您应该致电GetTypeInfo()

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