我有一个基类和一个从属类。
class A
{
...
}
class B : A
{
...
}
如何从依赖类中提取基类的对象?
B myDependant = new B();
A myBase = (A) myDependant;
(A)
强制转换是可选的,但myBase
对象仍然是B
的类型。我希望myBase
成为A
类型而不创建新对象。
答案 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 - 它的属性也将被序列化。