2017-05-18 32 views
0

我有2個類庫(C#),說AB擴展系統名稱空間並將其用作不同的.dll參考

A有一些方法在裏面。這些方法需要一個擴展方法來對它們的值進行加密/解密。

圖書館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()

「串」不包含「ToEncrypt」的定義,並沒有 擴展方法「ToEncrypt」接受 型「串」的第一個參數可以找到(是否缺少using指令或程序 集引用?)

但是,當我去的這些擴展方法的定義。這些事情在圖書館** B他們的正確定義。**

我懷疑有與圖書館衝突A's系統命名空間和B's系統命名空間?

請糾正我。

+0

'使用EncryptDecrypt' –

+0

@LeiYang,實際上不需要這樣做,因爲命名空間是'System'。我在某處指出了這個問題。 – Manoj

+0

系統是爲Microsoft Net Library保留的。您無權將項目添加到此庫。所以你應該讓任何自定義庫使用你自己的根名稱空間。 – jdweng

回答

3

答案可以在這裏找到...

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

核心命名空間包括所有系統命名空間,不包括 命名空間的應用模式和基礎設施的命名空間。核心 名稱空間包括系統,System.IO,System.Xml和System.Net。

X請勿給出與Core命名空間中的任何 類型衝突的類型名稱。

這些帽子都是有我認爲他們真的不希望你這樣做。爲什麼?因爲如果有第三方程序集飛來飛去,那麼人們如何能夠信任.NET框架,在覈心框架的名稱空間中引入他們自己的方法和類?

相關問題