反射得到 info 但是当datetime类型时,无法匹配 else if (info.PropertyType.Equals(typeof(System.DateTime)))
怎么办?
public static OracleParameter GetOracleParamter(string name, PropertyInfo info)
{
OracleParameter sqlp = new OracleParameter(name, DbType.Int32);
if (info.PropertyType.Equals(typeof(String)))
{
sqlp = new OracleParameter(name, DbType.String);
}
else if (info.PropertyType.Equals(typeof(int)))
{
sqlp = new OracleParameter(name, DbType.Int32);
}
else if (info.PropertyType.Equals(typeof(decimal)))
{
sqlp = new OracleParameter(name, DbType.Decimal);
}
else if (info.PropertyType.Equals(typeof(System.DateTime)))
{
sqlp = new OracleParameter(name, DbType.DateTime);
}
else if (info.PropertyType.Equals(typeof(double)))
{
sqlp = new OracleParameter(name, DbType.Double);
}
else if (info.PropertyType.Equals(typeof(bool)))
{
sqlp = new OracleParameter(name, DbType.Boolean);
}
return sqlp;
}
跟我现在写的不是一样吗?
断点得到的类型是:
System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
这很莫名其妙啊!
哦 nullable啊 知道了
var propertyType = Nullable.GetUnderlyingType(info.propertyType) ?? info.propertyType;
用propertyType判断就可以了
C# 反射怎么判断属性是int还是datetime,或者其他值类型
Type t = obj.GetType();\/\/获得该类的Typestring keys = string.Empty;string values = string.Empty;foreach (PropertyInfo pi in t.GetProperties()){var name = pi.Name;\/\/获得属性的名字,后面就可以根据名字判断来进行些自己想要的操作var value = pi.GetValue(obj, null);\/\/用pi.GetValu...
C#通过反射获取不同命名空间下的类(属性和方法)
请注意看异常信息。未能从“当前”程序集获取“外部”程序集中拥有指定完整限定名的类型。事实上,直接使用Type.GetType()会从当前程序集,也就是"test3"程序集中查找。想要查找NHapi.Model.V23程序集中的类型,请在该程序集上使用GetType.Assembly asmNHapi=Assembly.LoadFrom(...);Type outerType=as...
走进C#反射机制
首先,我们通过代码段1展示一个类,接下来通过代码段2展示如何使用反射获取属性值。利用Type的GetField()方法,我们可以轻松获取属性变量,如privateUnStatic等。通过代码段2中的例子,我们能够实际运行并查看结果。接着,我们介绍如何通过反射获取访问器,例如PublicProperty。这同样涉及到Type的GetProperty()方...
c#反射怎么获取类属性类型
info.PropertyType == typeof(DateTime)
C# 反射 如何获取类中属性的特性?
Type t = typeof(Program);foreach (PropertyInfo p in t.GetProperties()) { object[] o = p.GetCustomAttributes(true);}
c#怎样得到一个类有多少属性?
使用反射 添加引用System.Reflection PropertyInfo[] pis = typeof(要查看属性的类名).GetProperties();pis就是一个该类所有属性的数组
C#怎么利用反射来获取一个对象的 所有Attribute?
首先要获取对象的类型,根据类型再获取Attribute,同一类型的对象获取到的Attribute是相同的。static void Main(string[] args) { Type ty=typeof(System.Windows.Forms.Button); foreach (Attribute attribute in ty.GetCustomAttributes(true)) { Console.WriteLine(attribute); } ...
c#如何获取某一命名空间下的所有的类的信息?
如果是当前下的。用Assembly.GetExecutingAssembly().GetTypes();\\x0d\\x0a如果是外部DLL,用Assembly.Load("namespace").GetTypes();\\x0d\\x0a原理是反射,所以上面一定要加上using System.Reflection;\\x0d\\x0a\\x0d\\x0a示例代码:\\x0d\\x0avar classes = Assembly.Load("test").GetTypes(...
C#如何获取类中成员的数据类型
你用反射,那你获取PropertyInfo会告诉你当前属性是什么类型的。PropertyType 这个是指示什么数据类型。https:\/\/msdn.microsoft.com\/zh-cn\/library\/system.reflection.propertyinfo_properties(v=vs.80).aspx
C#中如何获取类中属性的名称
静态类 typeof(类名).GetProperties();类实例 类实例.GetType().GetProperties();