这个问题与此类似: 在C++中限制对特定类的方法访问
但是,我的问题是C#.
重申:我有两个类,比如说Foo和Bar紧密耦合.Foo公开了一个我只想要Bar访问的方法.
我有点想知道我想要什么,但不知道如何实际做到这一点,或者知道是否存在更简单的方法.它将涉及使用某种依赖于(new StackFrame(1)).GetMethod().DeclaringType拒绝访问的属性.用法看起来像这样:
public class Foo {
[RestrictedUsage(Allow=typeof(Bar))]
public int SomeMethod()
{
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
我可能缺少相关的细节问题(我是新来的) - 我一定会在我去的时候更新它.
更新:
我应该提一下,Foo包装一个现有UIElement的我试图修改的行为.由于课程是密封的,因此很难正常修改.Bar是将值转换为正确值的类.Bar是非UI,并在我的应用程序中的其他地方使用.Foo不知道如何转换价值(它很复杂 - 这就是Bar为什么),这就是为什么我不能只包装基本方法.
Jon Skeet给出了我期待的答案 - 改变课程的布局(感谢他到目前为止),但我认为任何一个答案都不适用(好的答案只是不相关).
我已经在代码中犯了错误,引用了错误的属性......
两种选择:
后者通常是更实用的选项,如果使Bar成为嵌套类是合理的.
如果这些都不起作用,我认为你最好只使用内部方法并记录它 - 你对组装中的其余代码有多少不信任?
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |