根据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);
}
}
我在这里缺少什么吗?为什么我得到这个例外?
答案 0 :(得分:3)
在.Net Standard或.Net Core中,您应该致电GetTypeInfo()
:
if (!desiredType.GetTypeInfo().IsAssignableFrom(outputType))