如何基于来自其继承类的值在C#中动态加载子类?
我有一个继承实体的类,因为我不能将父类转换为其子类型,所以我想动态加载实体数据而不显式定义每个属性。
我尝试使用foreach循环进行循环,但正如您所知,您无法为foreach变量赋值。
我的失败尝试:
public class ABroker : DP_ePAFBroker
{
public ABroker() : base()
{
}
public ABroker(DP_ePAFBroker data)
{
var props = typeof(DP_ePAFBroker).GetProperties();
foreach(object obj in this)
{
foreach (var prop in props)
{
obj = prop.GetValue(obj, null);
}
}
}
public IEnumerator GetEnumerator()//List of Objects
{
var props = typeof(DP_ePAFBroker).GetProperties().Select(p).ToList<Object>();
return props.GetEnumerator();
}
}
答案 0 :(得分:1)
您似乎正在尝试将基类实例中的所有值复制到您的继承者身上。
你可以这样做:
public ABroker(DP_ePAFBroker data)
{
foreach(var property in typeof(DP_ePAFBroker).GetProperties())
{
// get the value
var value = property.GetValue(data, null);
// set it on this instance
property.SetValue(this, value, null);
}
}
但是要小心这样复制引用类型。你最终可能会做一些丑陋的事情并为自己制造一些非常烦人的错误。