什么是C#相当于朋友?
可能重复:
为什么C#不提供C ++风格的“friend”关键字?
我希望一个类的私有成员变量可以被Tester类访问,而不会将它暴露给其他类。
在C ++中,我只需将Tester类声明为朋友,我如何在C#中执行此操作? 有人能给我一个例子吗?
有没有直接相当于“朋友” - 最接近可用(而不是非常接近)是InternalsVisibleTo。 我只用过这个属性进行测试 - 它非常方便!
示例:放置在AssemblyInfo.cs
[assembly: InternalsVisibleTo("OtherAssembly")]
壁橱的等价物是创建一个嵌套的类,它将能够访问外部类的私有成员。 像这样的东西:
class Outer
{
class Inner
{
// This class can access Outer's private members
}
}
或者如果您更喜欢将Inner类放入另一个文件中:
Outer.cs
partial class Outer
{
}
Inner.cs
partial class Outer
{
class Inner
{
// This class can access Outer's private members
}
}
采取非常普通的模式。 类工厂使小部件。 工厂类需要细化内部,因为它是工厂。 两者都在相同的文件中实现,并且按照设计,愿望和性质,紧密耦合的类 - 事实上,Widget实际上只是工厂的输出类型。
在C ++中,使Factory成为Widget类的一个朋友。
在C#中,我们可以做什么? 我遇到的唯一体面的解决方案是创造一个接口,IWidget,它只公开公共方法,并让Factory返回IWidget接口。
这涉及到相当多的乏味 - 在界面中再次暴露所有自然公共属性。
链接地址: http://www.djcxy.com/p/82183.html