0

如何根据继承类的值在 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();
    }
}
4

1 回答 1

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);
    }
}

不过,请小心以这种方式复制引用类型。你最终可能会做一些丑陋的事情,并在以后为自己创造一些非常恼人的错误。

于 2013-04-04T16:07:04.570 回答