gui*_*r80 5 c# oop friend double-pointer
想象一下,你有一个如下定义的类.
public class SomeClass
{
public Manager m { get; protected set; }
public SpecialData data { get; protected set; }
//More methods and member code here...
}
Run Code Online (Sandbox Code Playgroud)
我需要我的经理类以某种方式能够更改SpecialData成员的集合引用.我可以使用C++中的双指针或朋友类来完成此操作,但遗憾的是,该选项在C#中不可用.如何保持SpecialData不受外部用户设置,同时仍允许Manager类控制设置?我可以用内部关键字做到这一点,但这似乎并不是非常安全或干净......
任何帮助是极大的赞赏.
如果管理器类与 是同一程序集的一部分SomeClass
,则创建成员internal
将使同一程序集中的类可以访问 setter:
public SpecialData data { get; protected internal set; }
Run Code Online (Sandbox Code Playgroud)
这类似于使用friend
,不同之处在于“友谊”扩展到同一程序集的所有成员。
如果管理器是不同包的一部分,则可以InternalsVisibleTo
在程序集中使用属性。但是,在这种情况下,您应该对要扩展友谊的程序集进行签名,以避免未经授权的代码尝试获取对 setter 的访问权限。