如何使用系统命名空间创建扩展方法

时间:2017-05-18 06:15:43

标签: c# .net namespaces

我有2个类库(C#),说 A B

图书馆 B 有一些方法。这些方法需要和扩展方法来加密/解密它们的值。

图书馆 System 完成这项工作。该库有一个扩展方法,但在namespace System { public static class EncryptDecrypt { public static string ToEncrypt(this Object toEncrypt) { } public static string ToDecrypt(this string toDecrypt) { } } } 命名空间中扩展它。

System

我在using命名空间中使用它的原因是在所有应用程序中使用此扩展,而无需导入B部分。

请注意

.dll 将始终用作item.Member_FirstName.ToEncrypt()引用,因为它具有用于密码/解密的私钥(密钥)。 所以无论我在哪里使用这个库;我会有一把公钥来加密。

我设置了所有这些并且当我尝试它时;无论我在哪里使用它,它都会为每个扩展提供编译时错误。

所以,如果我在字符串B

上使用它
  

'string'不包含'ToEncrypt'的定义,不包含   扩展方法'ToEncrypt'接受类型的第一个参数   可以找到'string'(你是否错过了使用指令或者   装配参考?)

但是当我去定义这些扩展方法时。这些正在图书馆** [{1}} 。**

中正确定义

我怀疑与库 A's 系统命名空间和 B's 系统命名空间存在冲突?

请纠正我。

1 个答案:

答案 0 :(得分:3)

答案可以在这里找到......

https://msdn.microsoft.com/en-us/library/ms229026(v=vs.110).aspx

  

核心命名空间包括所有系统命名空间,不包括命名空间   应用程序模型和基础结构命名空间。核心   名称空间包括System,System.IO,System.Xml和   System.Net。

     

X请勿提供与任何内容冲突的类型名称   键入Core名称空间。

我认为他们真的不想让你这样做。为什么?因为如果第三方程序集飞来飞去,在核心框架的命名空间中引入自己的方法和类,有什么人能够信任.NET框架?