从依赖对象中提取基础对象

时间:2016-10-21 10:13:46

标签: c# oop

我有一个基类和一个从属类。

class A
{
   ...
}
class B : A
{
   ...
}

如何从依赖类中提取基类的对象?

B myDependant = new B();
A myBase = (A) myDependant; 

(A)强制转换是可选的,但myBase对象仍然是B的类型。我希望myBase成为A类型而不创建新对象。

2 个答案:

答案 0 :(得分:1)

根据您的上一条评论,您可以执行以下操作:

B myDependant = new B();
A myBase = JsonConvert.DeserializeObject<A>(JsonConvert.SerializeObject(myDependant));

通过这种方式,myBase将成为A类的实例。

答案 1 :(得分:1)

好吧,您可以创建自己的合约解析程序,检查该属性是否属于某种类型,如果不属于,则会将其标记为忽略:

df['TM52_fail_norm'] = ""

并使用它:

class MyContractResolver<T> : DefaultContractResolver
{
    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
    {
        var list = base.CreateProperties(type, memberSerialization);

        var baseProps = typeof(T).GetProperties();

        foreach (var prop in list)
        {
            prop.Ignored = baseProps?.All(p => p.Name != prop.PropertyName) ?? false;
        }

        return list;
    }
}

这里的专业人员是你的班级只会被序列化一次,而且如果来自其他班级的A inherts - 它的属性也将被序列化。

相关问题