是否可以设计一个C#类,使其通过反射查询时将自身标记为正IsValueType和正IsClass?
还是它们实际上是互斥的标记?
我知道,
大多数原始类型都会返回(包括枚举和结构):
IsValueType = true,IsClass = false。
字符串或任何类-摘要也..返回:
IsValueType = false,IsClass = true。
接口(interface)返回:
IsValueType = false,IsClass = false
最佳答案
让我们看一下这些实现:
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;
}
}
如您所见,
IsValueTypeImpl()
(由IsValueType
属性调用)取决于继承,而IsClass
取决于 IsValueType
(!)。接下来,this description of ValueType指出是不可能直接从ValueType 继承的。
因此,答案是否,您无法创建将同时为
IsClass
和IsValueType
的类型关于c# - 是否可以设计一个C#类,使其通过反射查询时将自身标记为正IsValueType和正IsClass?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16164639/