我正在尝试组装一个泛型方法,它传递一个类类型的对象(即:dbJob),还有一个子类的名称,如'LastUpdatedDate'和一个进程字符串,它可以是'> 2015' 年1月1日。
该方法如下所示
public bool checkProcess(object obj, string className, string processStr)
{
PropertyInfo[] propertyInfo;
bool returnValue = false;
propertyInfo = obj.GetType().GetProperties();
//propertyInfo className evaluate processStr
return returnValue;
}
我正在使用Reflection来获取我的班级的属性信息。假设我正在传递dbJob,我如何使用字符串说'LastUpdatedDate'作为子类来获取评估processStr的属性?
答案 0 :(得分:0)
只需尝试将其as
转换为该类型,如果成功可以强制转换,则从该实例类型中获取属性。
var subClass = obj as SubClass;
if ( subClass != null )
{
var type = subClass.GetType();
var props = type.GetProperties();
...
}
作为评论,如果您可以控制这些类,那么最好使用接口进行此类操作。
定义界面:
public interface IYourInterface
{
string SomeMethod();
}
在类上实现接口:(类可以根据需要实现尽可能多的接口)
public class YourSub : IYourInterface
{
... other methods/props ...
public string SomeMethod()
{
return "blah";
}
}
现在您可以将对象转换为该接口,如果它可以调用该方法。
var subClass = obj as IYourInterface;
if ( subClass != null )
{
var str = subClass.SomeMethod(); //done
}