据我所知,在C#中,不象C++中那样支持“friend”关键字。是否有另一种方法来设计一个类,可以实现相同的最终结果,而无需诉诸不可用的“friend”关键字?
对于那些还不知道的人来说,Friend 关键字允许程序员指定类“X”的成员只能由类“Y”访问和使用。但对于任何其他类来说,该成员都是私有的,因此无法访问它们。类“Y”不必继承自类“X”。
不,在 C# 中没有办法做到这一点。
一种常见的解决方法是将要隐藏其构造函数的对象基于接口。然后,您可以使用另一个对象来构造一个实现该接口的私有嵌套类,并通过工厂返回它。这可以防止外界直接构造您的对象,因为他们只看到界面并与之交互。
public interface IMyObject
{
void DoSomething();
}
public class MyFriendClass
{
IMyObject GetObject() { return new MyObject(); }
class MyObject : IMyObject
{
public void DoSomething() { // ... Do something here
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)