代码之家  ›  专栏  ›  技术社区  ›  Alex

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

  •  2
  • Alex  · 技术社区  · 16 年前

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

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

    解决方案2:生成一个“LinkBuilder”静态帮助器类,该类将客户作为GenerateActivationURL(客户-客户)方法的参数,然后从客户实例中获取所需数据以及静态配置数据,然后将URL作为字符串返回。

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

    1 回复  |  直到 16 年前
        1
  •  2
  •   Marc Gravell    16 年前

    你所说的“延伸”到底是什么意思?继承?扩展方法?

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

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

    这直接绑定 ActivationUrl 作为普通财产 Customer 实例。

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

    如果你 要执行“选项2”(可能您没有访问DAL DLL的权限),则扩展方法将是适当的:

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