动态赋值给c#中的子类
本文关键字:子类 赋值 动态 | 更新日期: 2023-09-27 18:07:39
如何根据继承类的值动态加载c#中的子类?
我有一个继承实体的类,因为我不能将父类强制转换为它的子类型,所以我想动态加载实体数据,而不显式地定义每个属性。
我试着用foreach循环来做,但是你知道你不能给foreach变量赋值。
My Failed try:
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();
}
}
看起来你试图从基类的实例中复制所有的值到你的继承者。
你可以这样做:
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);
}
}
但是,以这种方式复制引用类型时要小心。你最终可能会做一些丑陋的东西,并为你自己创造一些非常烦人的bug。