Tag: 类型

如何查看GenericTypeDefinition是否实现IEnumerable

我有一个方法来检查类型是否是通用的,然后检查GenericTypeDefinition是否是IEnumerable 。 static Type GetEnumerableType(Type type) { if(type.IsGenericType) { var genericTypeDefinition = type.GetGenericTypeDefinition(); if (genericTypeDefinition == typeof(IEnumerable)) { return type.GetGenericArguments()[0]; } } return null; } 如果它是一个IEnumerable,它就像一个魅力。 如果GenericTypeDefinition是IList或List则它不起作用。 我试过了.. typeof(IEnumerable).IsAssignableFrom(genericTypeDefinition) ..没有成功。 当然必须有更好的方法然后链接其他语句?

将Null值分配给DataTable中的Integer列

我有一个带有Integer DataType的One ColumnName“CustomerID”的数据表。 动态地我想向DataTable添加行。 为此,我创建了一个DataRow对象,如: DataTable dt = new DataTable(); DataRow DR = dt.NewRow(); DR[“CustomerID”] = Convert.ToInt32(TextBox1.Text); 但是如果TextBox包含空字符串,则会抛出错误。 在这种情况下,我想将Null值分配给CustomerID。 这该怎么做?

将T限制为字符串和整数?

我已经为自己构建了一个generics集合类,它是这样定义的。 public class StatisticItemHits{…} 此类只能与int和string值一起使用。 不过这个 public class StatisticItemHits where T : string, int {…} 不会编译。 我究竟做错了什么?

C#:在运行时获取类型参数以传递给Generic方法

通用方法是…… public void PrintGeneric2(T test) where T : ITest { Console.WriteLine(“Generic : ” + test.myvar); } 我从Main()调用它… Type t = test2.GetType(); PrintGeneric2(test2); 我收到错误“CS0246:无法找到类型或命名空间名称’t’和”CS1502:最佳重载方法匹配DoSomethingClass.PrintGeneric2 (T)具有无效参数“ 这与我之前的问题有关: C#:传递通用对象 我已经读过,在没有使用reflection或methodinfo的情况下,无法在运行时确定generics类型,但是在这个实例中我不太清楚如何这样做。 谢谢,如果你可以启发我=)

C#类型后缀为十进制

我不知道我正在努力实现的正确措辞是什么,所以它可能已经在网上发布。 如果是,请善待。 好吧基本上我有这个方法。 public static T IsNull(IDataReader dr, String name, T nullValue) { return Helpers.IsNull(dr, dr.GetOrdinal(name), nullValue); } public static T IsNull(IDataReader dr, Int32 index, T nullValue) { if (dr.IsDBNull(index)) { return nullValue; } else { return (T)dr.GetValue(index); } } 被称为Helpers.IsNull(dr, “UnitWholeSale”, 0d) ,我得到的错误是“无法从double转换为十进制”。 现在我知道我可以使用decimal.Zero但有一些方法我可以简单地去0dec或类似的东西吗? 我只是讨厌那些冗长的快捷方式值(特别是在调用带有20个参数的构造函数时)。

在.NET中,在运行时:如何从Type对象获取类型的默认值?

可能重复: 类型的默认值 在C#中,要获取Type的默认值,我可以写… var DefaultValue = default(bool);` 但是,如何为提供的Type变量获取相同的默认值? public object GetDefaultValue(Type ObjectType) { return Type.GetDefaultValue(); // This is what I need } 或者,换句话说,“默认”关键字的实现是什么?

避免在Type.GetType()中给出命名空间名称

Type.GetType(“TheClass”); 如果namespace不存在,则返回null ,如: Type.GetType(“SomeNamespace.TheClass”); // returns a Type object 有没有办法避免给出namespace名称?

从全名创建C#类型

我正在尝试从类型全名获取一个Type对象我正在进行以下操作: Assembly asm = Assembly.GetEntryAssembly(); string toNativeTypeName=”any type full name”; Type t = asm.GetType(toNativeTypeName); 我搞砸了,为什么? 程序集是我的可执行文件(.net可执行文件),类型名称是:System.Xml.XmlNode

具有多个类的通用

我正在尝试创建这种通用方法来简化操作,但我想我搞砸了! 你能解决我的问题吗? 这编译: private string ConcatenateText(MyEntity myEntity) where T1 : Supplier, new() where T1 : Employee, new() where T2 : SupplierDepartment, new() where T2 : EmployeeDepartment, new() { T1 p = new T1(); T2 r = new T2(); //Code here for myEntity treatment return mystring; } 虽然这不编译: protected void mybutton1_Click(object sender, EventArgs e) { string […]

为什么IsAssignableFrom()不适用于int和double?

这是假的: typeof(double).IsAssignableFrom(typeof(int)) 这是假的: typeof(int).IsAssignableFrom(typeof(double)) 但这有效: double a = 1.0; int b = 1; a = b; 显然, double 可以从int赋值,但框架IsAssignableFrom()会错误。 为什么? 或者这是由.NET和double的特殊性质引起的.NET中的一个错误,它没有inheritance关系但是可以分配(在一个方向上)?