动态赋值给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();
    }
}

动态赋值给c#中的子类

看起来你试图从基类的实例中复制所有的值到你的继承者。

你可以这样做:

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。