如何通过接口从类引用访问内部

时间:2017-11-16 10:04:34

标签: c# .net reflection .net-assembly

我的情况是我有两个班级生活在不同的集会中。 Assembly B引用Assembly AClass B需要访问Class A的内部方法(内部方法,以便Class A的其他用户无法访问,不是为了安全,只是防止滥用)。我控制这两个程序集,因此InternalsVisibleTo possible 仅授予Class B访问权限。

汇编A

[assembly: InternalsVisibleTo("B")]
public Class A {
...
    internal String secretKey { get; set;}
}

装配B

public Class B {
...
    // use A.secretKey which works just fine
}

实际上, 是可能的,因为我现在需要通过新添加的(实际由Visual Studio自动生成)接口Class A来引用IA

汇编A

public interface IA {
    // nothing gets generated for secretKey because its internal
}

[assembly: InternalsVisibleTo("B")]
public Class A : IA {
...
    internal String secretKey { get; set;}
}

装配B

public Class B {
...
    // how to use IA.secretKey 
}

所以问题是,我如何才能将Class A的内部方法仅授予Class B,但不能在界面IA中公开?这是一个nogo还是什么是最佳实践?

reflection是一个选项而我会应用how吗?这不是一个单元测试/模拟场景,但PrivateObject是否合适? Dynamic assembly正在加载?

欢迎完全不同的方法!

0 个答案:

没有答案