类型不包含 IsAssignableFrom 的定义
Type does not contain a definition for IsAssignableFrom
根据 this 文档,我正在尝试使用 IsAssignableFrom
方法。但是,我收到以下异常:
Error CS1061 'Type' does not contain a definition for 'IsAssignableFrom' and no extension method 'IsAssignableFrom' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
违规行是
if (!desiredType.IsAssignableFrom(outputType))
在下面class:
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);
}
}
这里有我遗漏的东西吗?为什么我会收到此异常?
在 .Net Standard 或 .Net Core 中,您应该调用 GetTypeInfo()
:
if (!desiredType.GetTypeInfo().IsAssignableFrom(outputType))
根据 this 文档,我正在尝试使用 IsAssignableFrom
方法。但是,我收到以下异常:
Error CS1061 'Type' does not contain a definition for 'IsAssignableFrom' and no extension method 'IsAssignableFrom' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
违规行是
if (!desiredType.IsAssignableFrom(outputType))
在下面class:
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);
}
}
这里有我遗漏的东西吗?为什么我会收到此异常?
在 .Net Standard 或 .Net Core 中,您应该调用 GetTypeInfo()
:
if (!desiredType.GetTypeInfo().IsAssignableFrom(outputType))