是否可以设计一个 C# 类,在通过反射查询时将其自身标记为正 IsValueType 和正 IsClass?
或者它们实际上是相互排斥的标记?
我知道,
大多数原始类型将返回(包括枚举和结构):
IsValueType=true,IsClass=false。
字符串或任何类 - 也是抽象..返回:
IsValueType=false,IsClass=true。
接口(interface)返回:
IsValueType=false, IsClass=false
最佳答案
Is it possible to design a C# class that when querying it through reflections will mark itself as positive IsValueType and positive 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;
}
}
如您所见,IsValueTypeImpl()
(由 IsValueType
属性调用)依赖于继承 和 IsClass
取决于 IsValueType
(!).
接下来,this description of ValueType指出不可能直接从 ValueType 继承。
所以,答案是否,您不能同时创建IsClass
和IsValueType
的类型
关于c# - 是否可以设计一个 C# 类,在通过反射查询时将其自身标记为正 IsValueType 和正 IsClass?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16164639/