什么是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

上一篇: What is the C# equivalent of friend?

下一篇: What is a private interface?