我在一个应用程序中有两个实例,我需要在其中实现将对象从一种类型转换为另一种类型的功能。一个从域对象转到另一个域对象,另一个从域对象转到 XmlDocument。
我最初设置它的方式是在 DomainObject1
和 DomainObject2 中包含一个
分别。 ToXml()
和 ToMyOtherDO()
ToXml
中的功能并不是真正特定于 DomainObject1
的实现,可能存在于任何地方。 ToMyOtherDO()
具有非常特定于它所在类型的功能。两者都执行类型转换,但有很大不同。
我的问题是,我是否将此功能放在了正确的位置?这个功能放在辅助类中会更好吗?或者其他地方 - 也许覆盖显式转换运算符?
最佳答案
我通常喜欢把这种功能放在extension methods中。 .
编辑:解释
我通常更喜欢将这种功能放在扩展方法中,因为我不觉得需要“转换”的类真的需要知道如何进行转换。这提供了一些解耦。您可以轻松更改 XML 的格式,而无需更改要转换为 XML 的对象(当要转换的对象位于单独的程序集中时尤其有用)。
你最终会遇到这样一种情况,你想将你的领域对象转换成它并不真正需要知道的东西。例如,也许您想将域对象转换为 Json.NET JObject
。包含域对象的程序集不需要引用 Json.NET如果您使用扩展方法在单独的程序集中处理转换,则为库。
扩展方法非常棒,尤其是在处理 Entity Framework 时。实体类的代码是自动生成的,因此您不能只向类添加 ToXML()
或 ToJObject()
。
这些只是我的偏好,我并不总是使用扩展方法来处理这种功能。它只是您的武器库中用于解决此类问题的另一个很棒的工具。
关于c# - 我应该在哪里放置功能以在类型之间进行转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9603306/