如果我有一个复杂的对象,我可以继承它并删除或忽略某些属性吗?
如果您不关心为什么我想这样做,请随时提交答案。
如果你照顾,你可以阅读this question。总结一下,我有一个对象有一个不可序列化的属性,我想序列化整个对象。有问题的对象是System.Exception
为了解决这个问题,我想简单地创建自己的JsonException
对象,继承基础(System.Exception
)的所有可爱属性,除了删除(或清空)丑小鸭({{1 }})。
类似的东西:
Exception.TargetSite
另外请记住,我坚持使用.NET 2.0,如果不需要,我真的不想使用自定义序列化程序(如Json.NET)。
答案 0 :(得分:5)
请参阅“定义异常类”段落中的here,了解如何创建自定义可序列化异常。
文章的相关部分:
[Serializable()]
public class InvalidDepartmentException : System.Exception
{
public InvalidDepartmentException() : base() { }
public InvalidDepartmentException(string message) : base(message) { }
public InvalidDepartmentException(string message, System.Exception inner) : base(message, inner) { }
// A constructor is needed for serialization when an
// exception propagates from a remoting server to the client.
protected InvalidDepartmentException(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context) { }
}
答案 1 :(得分:1)
您是否在不重写TargetSite属性的情况下尝试了?我能够做到(但不是2.0,所以我不确定它是否适合你这样
public class MyException : Exception
{
public new System.Reflection.MethodBase TargetSite
{
get { return null; }
}
public MyException() : base()
{
}
}
答案 2 :(得分:0)
您是否尝试过使用IgnoreDataMemberAttribute
或NonSerializedAttribute
?
[IgnoreDataMember]
// or
[NonSerialized]
public override System.Reflection.MethodBase TargetSite
{
// ...
}