为了账号安全,请及时绑定邮箱和手机立即绑定

朋友的C#等效项是什么?

朋友的C#等效项是什么?

C#
潇潇雨雨 2019-10-28 10:42:44
我希望Tester类可以访问某个类的私有成员变量,而不要将它们暴露给其他类。在C ++中,我只是将Tester类声明为朋友,如何在C#中做到这一点?有人可以给我一个例子吗?
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

没有“朋友”的直接等效项-可用的最接近(并且不是很接近)的是InternalsVisibleTo。我只用过此属性进行测试-非常方便!


示例:放置在AssemblyInfo.cs


[assembly: InternalsVisibleTo("OtherAssembly")]


查看完整回答
反对 回复 2019-10-28
?
Helenr

TA贡献1780条经验 获得超4个赞

壁橱的等效项是创建一个嵌套类,该类将能够访问外部类的私有成员。像这样:


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

    }

}


查看完整回答
反对 回复 2019-10-28
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

采取非常常见的模式。类工厂制作小部件。Factory类需要对内部进行处理,因为它是Factory。两者都在同一个文件中实现,并且根据设计,需求和性质,它们是紧密耦合的类-实际上,Widget实际上只是工厂的一种输出类型。

在C ++中,将Factory设为Widget类的朋友。

在C#中,我们能做什么?我想到的唯一体面的解决方案是发明一个接口IWidget,该接口仅公开公共方法,并具有Factory返回的IWidget接口。

这涉及大量的乏味-再次在界面中暴露所有自然的公共属性。


查看完整回答
反对 回复 2019-10-28
  • 3 回答
  • 0 关注
  • 326 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信