如何在多个项目中使用扩展方法。

9
我正在学习扩展方法,这是一种非常方便的功能,可以节省大量编码时间,提供可重用性。最近我每天都在创建10个扩展方法,这些方法在日常场景中非常有用。但我不知道如何使用这些扩展方法,因为每次我们需要添加dll并引用它。或者是否有任何聪明的方法可以使用它们?
假设...
 public static bool isValidMail(this string str)
        {
            Regex reg = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
            return reg.IsMatch(str);
        }

如果我创建了100个类似这样的扩展方法,那么对于每个项目我都需要引用这个静态类的dll。由于我要处理多个项目,有没有办法将这些扩展方法放在一个集中的位置或某个程序集缓存中,以便我们可以轻松添加using语句并访问所有静态方法。
我们可以这样做吗?
  1. 每当我们创建新项目时,是否可以让VS自动添加我们创建的扩展方法,以便在每个项目中都可以访问它们。而不是每次都添加dll。
  2. 我想知道你们如何处理。希望没有人会对此投反对票,只是好奇扩展方法的实现方式。

关于“每天创建10个扩展方法”的问题 - 要小心使用扩展方法(特别是在自定义业务对象上),只有在其他适当的方式无法实现目标时才使用它们,扩展方法类似于多重继承,因此它们可能会搞乱代码。 - sll
2个回答

10

看起来你应该拥有一个包含相关扩展方法的单一项目 - 然后是的,你需要从每个需要它的项目中添加对该项目的引用。这是一个一次性的成本。你可以将其放在GAC中,但就我个人而言,我不会这样做 - 只需将其视为另一个类库,你需要像任何其他类库一样依赖即可。


谢谢您的建议,不过我很好奇如何将其添加到GAC中,您能告诉我如何操作吗?为了学习目的,我正在实现这些扩展方法,至少我会知道如何共享我们的代码到GAC。虽然我喜欢您的每一个答案、评论,甚至是您精彩的C#深度书籍,我一直在跟随它 :) - Ravi Gadag
1
@Ravi:你应该了解一下强名称程序集和gacutil:http://msdn.microsoft.com/en-us/library/ex0ss12c.aspx - 很高兴听到你喜欢这本书 :) - Jon Skeet

0
  1. 您可以更改VS 2010项目模板,以自动包含“框架”DLL。 Visual Studio模板

  2. 我只需保留各种常见dll的共同存储库并引用我需要的那些dll,这也在SVN中,然后我为我创建的每个框架具有特定的代码片段,以便轻松插入常用代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接