![]() |
1
241
没有直接等同于“朋友”的东西——最接近的就是 InternalsVisibleTo . 我只在测试中使用过这个属性——它非常方便!
例子:
被置于
|
![]() |
2
68
壁橱等价物是创建一个嵌套类,该类将能够访问外部类的私有成员。像这样:
或者,如果您希望将内部类放在另一个文件中:
|
![]() |
3
40
采取一种非常常见的模式。类工厂生成小部件。工厂类需要处理内部结构,因为它是工厂。两者都是在同一个文件中实现的,并且根据设计、需求和本质,它们都是紧密耦合的类——事实上,小部件实际上只是工厂的一种输出类型。 在C++中,使工厂成为WIDGET类的朋友。 在C中,我们能做什么?我遇到的唯一体面的解决方案是发明一个接口Iwidget,它只公开公共方法,并让工厂返回Iwidget接口。 这需要相当多的单调——在界面中再次暴露所有自然公共属性。 |
![]() |
4
13
C中没有“friend”关键字,但是测试私有方法的一个选项是使用System.Reflection来获取该方法的句柄。这将允许您调用私有方法。 给定一个具有此定义的类:
您可以使用以下代码调用它:
如果您使用的是Visual Studio团队系统,那么您可以让vs通过右键单击该方法并选择“创建单元测试…”来自动生成包含私有访问器的代理类。 |
![]() |
5
6
如果授予访问权限的类位于另一个包中,并且要公开的方法标记为“内部”或“内部受保护”,则可以模拟友元访问。您必须修改要共享的程序集,并将以下设置添加到assemblyinfo.cs:
根据需要,公钥是可选的。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 5 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 5 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 5 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 6 月前 |