【发布时间】:2022-01-18 10:30:26
【问题描述】:
我需要能够将子对象的实例转换为其父对象的实例。
public class Parent
{
public string name{ get; set; }
}
public class Child : Parent { }
var myClass = new Child();
(Parent)myClass;
上面的转换似乎不起作用,并且对象仍然具有子类型序列化时。
还有其他的投射方式吗?
我只使用子类进行验证——出于序列化原因,我需要子类仅具有父类的类型。
【问题讨论】:
-
我需要这样做,因为我只使用子类进行验证。出于序列化原因,我需要孩子只有父母类型。
-
var castClass = (Parent)myClass castClass 在此行之后仍有子类型。
-
这是一个有效的问题,并且序列化程序暴露了一个不容易立即显而易见的 C# 行为,即可以将对象作为基本类型引用,但将其转换为这样实际上并不会改变它对象或其类型。这在序列化之外的大多数情况下都可以正常工作,但它肯定不仅仅是序列化。 +1 询问我正在寻找的问题。但是,稍微修改一下您的问题会使其更有用。
-
几乎要问这个问题了,虽然我的是
vb.net。对这个问题 +1,因为Servy's answer 是我在每次尝试中都错过的(甚至尝试过序列化,发现它太重了)所以 +1 对 Matt Grande 的评论,因为这个问题值得更精确 关于这个问题(序列化 和 类的使用)但是,Servy 的答案不仅仅是关于序列化(第二段不包括引用不是 ;))谢谢,我现在可以将我的(父)类与 200+ReadOnly属性一起使用。
标签: c# serialization casting