G.Y*_*G.Y 9 .net c# reflection
是否有可能设计一个C#类,通过反射查询它会将自己标记为正IsValueType和正IsClass?
或者它们实际上是相互排斥的标记?
我知道,
大多数原始类型将返回(包括枚举和结构):
IsValueType = true,IsClass = false.
字符串或任何类 - 摘要也是.. return:
IsValueType = false,IsClass = true.
接口返回:
IsValueType = false,IsClass = false
是否有可能设计一个C#类,通过反射查询它会将自己标记为正IsValueType和正IsClass?
我们来看看这些实现:
protected virtual bool IsValueTypeImpl()
{
return this.IsSubclassOf((Type) RuntimeType.ValueType);
}
public bool IsClass
{
[__DynamicallyInvokable] get
{
if ((this.GetAttributeFlagsImpl() & TypeAttributes.ClassSemanticsMask) == TypeAttributes.NotPublic)
return !this.IsValueType;
else
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,IsValueTypeImpl()(由IsValueType属性调用)取决于继承并IsClass 依赖于 IsValueType(!).
接下来,ValueType的这种描述表明不可能直接从ValueType继承.
所以,答案是不,你不能创建,这将是类型IsClass,并IsValueType在同一时间