我的情况是我有两个班级生活在不同的集会中。 Assembly B
引用Assembly A
和Class 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正在加载?
欢迎完全不同的方法!