- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
Type.IsGenericType
和 Type.IsGenericTypeDefinition
有什么区别?有趣的是,MSDN 的 IsGenericTypeDefinition 链接已损坏。
更新: IsGenericTypeDefinition MSDN's entry
在尝试检索给定 DbContext 中定义的所有 DbSet 后,我得到了以下结果,我试图理解这种行为:通过 IsGenericType 过滤属性返回所需的结果,而使用 IsGenericTypeDefinition 则不(不不返回任何)。
有趣的是,来自 this帖子我的印象是作者确实使用 IsGenericTypeDefinition 获得了他的 DbSet,而我没有。
下面是一个说明讨论的示例:
private static void Main(string[] args)
{
A a = new A();
int propertyCount = a.GetType().GetProperties().Where(p => p.PropertyType.IsGenericType).Count();
int propertyCount2 = a.GetType().GetProperties().Where(p => p.PropertyType.IsGenericTypeDefinition).Count();
Console.WriteLine("count1: {0} count2: {1}", propertyCount, propertyCount2);
}
// Output: count1: 1 count2: 0
public class A
{
public string aaa { get; set; }
public List<int> myList { get; set; }
}
最佳答案
IsGenericType
告诉你 System.Type
的这个实例表示指定了所有类型参数的泛型类型。例如,List<int>
是泛型。
IsGenericTypeDefinition
,另一方面,告诉您 System.Type
的这个实例表示一个定义,可以通过为其类型参数提供类型参数来构造泛型类型。例如,List<>
是泛型类型定义。
您可以通过调用GetGenericTypeDefinition
来获取泛型类型的泛型定义。 :
var listInt = typeof(List<int>);
var typeDef = listInt.GetGenericTypeDefinition(); // gives typeof(List<>)
您可以通过向 MakeGenericType
提供类型参数来从泛型类型定义创建泛型类型。 :
var listDef = typeof(List<>);
var listStr = listDef.MakeGenericType(typeof(string));
关于c# - IsGenericType 和 IsGenericTypeDefinition 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31772922/
我试图了解类型的 IsGenericTypeDefinition 属性。据我了解,它只是没有任何替代类型的类模板(我们无法创建此类的实例)。这是我的测试程序的代码: class Test {
Type.IsGenericType 和 Type.IsGenericTypeDefinition 有什么区别?有趣的是,MSDN 的 IsGenericTypeDefinition 链接已损坏。 更
实例属性的文档 Type.IsConstructedGenericType 不清楚或具有误导性。 我尝试了以下代码来查找此属性和相关属性的实际行为: // create list of types t
例子: class Base{} class Child : Base{} typeof( Base<> ).IsGenericTypeDefinition; // == true ie. param
System.Type 类型包含属性 IsGenericTypeDefinition和 ContainsGenericParameters .阅读 MSDN 文档后,我得出结论,存在这两个属性以检查类
我是一名优秀的程序员,十分优秀!