【发布时间】:2010-04-13 06:22:51
【问题描述】:
要了解我的要求,请考虑这些类 -
class A { }
class B {
String m_sName;
public String Name {
get { return m_sName; }
set { m_sName = value; }
}
int m_iVal;
public int Val {
get { return m_iVal; }
set { m_iVal = value; }
}
A m_objA;
public A AObject {
get { return m_objA; }
set { m_objA = value; }
}
}
现在,我需要识别传递给函数的对象的类
void MyFunc(object obj) {
Type type = obj.GetType();
foreach (PropertyInfo pi in type.GetProperties()) {
if (pi.PropertyType.IsClass) { //I need objects only
if (!type.IsGenericType && type.FullName.ToLower() == "system.string") {
object _obj = pi.GetValue(obj, null);
//do something
}
}
}
}
我不喜欢这段代码-
if (!type.IsGenericType && type.FullName.ToLower() == "system.string") {
因为我必须过滤掉 System.Int16、System.Int32、System.Boolean 等类。
是否有一种优雅的方法可以让我确定对象是否属于我定义的类而不是系统提供的基本类?
【问题讨论】:
标签: c# reflection c#-2.0