Gre*_*som 2 .net c# properties visual-studio
有时,.NET运行时要求我们为属性创建公共setter,这些属性应该是真正的只读属性.例如:
在每种情况下,我都可以将setter留空,而不会影响功能,但这可能会导致混乱.
鉴于我无法避免在这些属性上使用公共setter,是否有办法在访问setter时生成编译器警告?属性[Deprecated]和[Obsolete]将完成工作,但措辞/意图是不对的.
我解决这个问题的方法是,为了序列化,我根本不会破坏我的类型的完整性.序列化的过程完全与数据有关,而与行为有关.我拒绝为仅限数据的方案破坏我的类型的行为.
相反,我设计我的类型以实现最有效+安全的使用.如果结果类型不可序列化并且我找到了需要它的场景,我将创建单独的类型,这些类型仅用于序列化其他类型.
这是一个快速的样本.
// My Core Immutable Type
namespace MyProject {
public sealed class Student {
private readonly string _name;
public string Name {
get { return _name; }
}
public Student(string name) {
_name = name;
}
}
}
// My Xml Serialization Type
namespace MyProject.Serialization {
public class SerializableStudent {
public string Name;
public SerializableStudent(Student source) {
Name = source.Name;
}
public Student ConvertToStudent() {
return new Student(Name);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |