我有类和接口的混合层次结构。
对于使用序列化,我需要一个默认的构造函数 每节课。如果编译器可以告诉我,我真的很感激 我在层次结构中的某个地方缺少默认构造函数。 (在编译时看到问题,而不是在后面的测试中)
我想要的是一些标记或属性, 但我找不到任何东西。
类似的东西:
[ForceDefaultConstructor]
interface IVeryQuickSerializable
{
Serialize();
Deserialize();
}
会很棒!
但是非常感谢。
有一个限制:我无法更改序列化。 使它成为通用可以解决问题,但我没有 来源。编写包装器可能会完成这项工作,但它会 对于从顶层序列化派生的对象有一个漏洞 界面(可能不会改变)。
答案 0 :(得分:6)
您无法在界面或属性中执行此操作。
两个想法:
在使用T : new()
子句的通用API中公开您的序列化代码,即
void Serialize<T>(T obj, ...) where T : IVeryQuickSerializable, new()
答案 1 :(得分:0)
最有可能是更好的解决方案,但您可以编写一个应用程序,它使用反射来检查构建后事件期间的程序集。