2017-06-01 101 views
0

我有兩個不同的庫,它們引用了稱爲base.dll的基礎庫。一個庫用於Web平臺,另一個用於Windows平臺(WPF)。我必須限制WPF平臺中的一個公共屬性,但我想在Web平臺中訪問它。如何實現這一目標?我正在嘗試條件編譯,但我不知道如何完成。請幫我如何限制引用庫中的公共訪問修飾符?

對於防爆: - 基礎庫:

public Class CommonClass{ 
    public string CssClass 
       { 
      get; 
      set; 
       } 
} 

引用的庫1(網絡) - 參考的基礎庫,需要在這個庫訪問的CssClass

引用的庫2:( WPF) - 引用基礎庫,需要限制這個庫中的CssClass

回答

1

這實際上聽起來像是一個設計缺陷。您創建一個庫並定義該庫的用戶應該可以訪問哪些屬性。通常你不會隱藏特定客戶的特定屬性。

不過,我認爲你可以通過屬性internal達到你想要什麼,用在InternalsVisibleToAttributebase.dll

[assembly: InternalsVisibleTo("webplatformassembly")] 

public Class CommonClass{ 
    internal string CssClass 
    { 
     get; 
     set; 
    } 
} 

這樣沒有客戶可以看到的財產,除非是在InternalsVisibleTo屬性提到的那些。

另請參閱:Friend Assemblies (C# and Visual Basic)