更好的代码:扩展LINQ类,还是创建单独的帮助类?

时间:2009-08-20 07:36:18

标签: c# asp.net-mvc code-design

我正在试图找出更好/更清洁/更易维护的方法,以解决以下问题。我的“Customer”类是通过数据库中的LINQ生成的。客户有一个特殊的激活链接,这是一个需要从Customer实例和一些静态配置数据中生成的数据生成的URL。

解决方案1:使用GenerateActivationUrl()方法扩展部分Customer类,该方法将从其自己的实例获取数据并调用具有配置数据的静态类,然后呈现Url并将其作为字符串返回。

解决方案2:创建一个“LinkBuilder”静态助手类,它将Customer作为GenerateActivationUrl(客户客户)方法的参数,然后从客户实例获取所需的数据以及静态配置数据,然后返回Url as a string。

哪种解决方案更好,为什么?谢谢!

1 个答案:

答案 0 :(得分:2)

“延伸”究竟是什么意思?遗产?扩展方法?

就个人而言,我会使用部分类(在同一名称空间中,但是与codegen不同的文件)将其作为属性公开:

namespace MyDalNamespace {
    partial class Customer {
        public string ActivationUrl {get {/* some code */ }}
    }
}

这会直接将ActivationUrl绑定为Customer实例上的常规属性。

作为一个属性,它可以参与数据绑定(与扩展方法不同,它不能)。

如果你做“选项2”(也许你没有访问DAL dll),那么扩展方法是合适的:

GenerateActivationUrl(this Customer customer) { ... } // note "this"