|
|
1
3
在序列化不可变类型之前,我也遇到过类似的问题,最后我决定实现ISerializable接口,并使用SerializationInfo在序列化/反序列化过程的两端存储和检索私有变量: http://theburningmonk.com/2010/04/net-tips-making-a-serializable-immutable-struct/ 我刚刚用同样的技术构建并运行了一个测试应用程序,它似乎对我有用。所以你可以把你的诊所课程改成:
这将解决从WCF传回数据的问题。但从设计的角度来看,我同意Ladislav所说的,通常您会希望将域对象与纯粹用于消息传递的对象(DataTransferObjects)分开,在这种情况下,下面是一个示例,说明如何处理它:
为了减轻从Clinic转换到ClinicDTO的痛苦,您可以在Clinic上添加一个方法来执行此操作,或者实现隐式/显式转换器。我举了一个例子来说明如何做到这一点: http://theburningmonk.com/2010/02/controlling-type-conversion-in-c/ 希望这有帮助! |
|
|
2
2
如果你想拥有真正的域驱动设计,你不应该在WCF中公开你的域对象。相反,您应该创建一组DTO并公开这些DTO。服务层将负责将这些DTO转换为域对象/值对象,反之亦然。 |