這個問題是類似這樣的: Restrict method access to a specific class in C++創建受限制的方法/字段在C#
不過,我的問題是C#。
重申:我有兩個類,例如Foo
和Bar
,它們緊密耦合。 Foo
揭露我只想要Bar
有權訪問的方法。
我還挺有我想要的東西的想法,但不知道如何真正做到這一點,或者知道一個簡單的方法存在。這將涉及使用某種依賴於使用(new StackFrame(1)).GetMethod().DeclaringType
來拒絕訪問的屬性。用法會是這個樣子:
public class Foo {
[RestrictedUsage(Allow=typeof(Bar))]
public int SomeMethod()
{
// do something
}
}
可能有相關的細節我錯過了這個問題(我是新來的) - 我一定會爲我去更新它。
UPDATE: 我應該指出,Foo
包裝現有UIElement
誰的行爲,我想修改。由於課程是封閉的,很難正常修改。 Bar
是將值轉換爲正確值的類。 Bar
是非UI,在我的應用程序中用於其他地方。 Foo
不知道如何轉換值(這很複雜 - 這就是Bar
),這就是爲什麼我不能簡單地包裝基本方法。
喬恩斯基特給了我期待的答案 - 改變類的佈局(全拜是他至今),但我不認爲任何答案是適用的(好的答案只是不相關)。
我已經在代碼中所犯的錯誤,引用了錯誤的屬性...
我不信任的代碼,因爲我不使用它的只有一個。由於Foo也是一個UIElement,所以在其他地方自然也提到它(排除單獨的程序集)。 – 2010-02-16 22:30:22
不是唯一使用它的人不一定是不信任代碼的理由。你的同事是否經常忽略記載的「不要使用這種」類型的警告?另外,僅僅因爲Foo被別處引用並不意味着它不能在它自己的程序集中...... – 2010-02-16 23:13:44
我最終嵌套了這個類。我稍微調整了一些其他部分,新的結果很好。謝謝! – 2010-02-19 01:57:37