将对公共 setter 的访问限制为特定对象 (C#)

2023-12-09

我正在尝试创建一个类(在 C# 中)作为我的应用程序的环境。

我试图使该类动态化,并将其作为参数发送给我的应用程序中的实体。问题是,我希望能够更改此环境类(公共设置器)的属性,但同时我希望接收环境的类无法使用这些设置器。

我似乎找不到一个好的方法来表达我的问题(我认为这是我在 Google 或 msdn 上找不到类似内容的部分原因),但简而言之,我想创建一个带有设置器的类,该设置器仅对我的某些对象公开,而不是对所有对象.

我目前正在考虑以下想法: 完全避免公共设置器,并使用事件注册公开私有字段。

该类将在新的第三个对象中注册事件(作为参数发送给构造函数)。将由环境注册的方法与 setter 没什么区别,因此触发这些事件将“允许访问”私有字段。

我想要一些想法(因为我觉得我的想法并不是那么好),或者更好的是我可以利用一些模式。

提前致谢


“内部”还不足以满足您的需要吗?

您可以将设置器移动到接口中作为显式实现。然后,它们对公共接口隐藏,并且只有在转换到接口时才可以访问。

如果您想真正确保没有其他人可以调用它,您可以向这些函数添加一些参数,其中您期望某个令牌对象仅提供给受信任的类。

void SetX(int value, object token)
{
    if(token!=correctToken)
        throw new ArgumentException("wrong token");
    x=value;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将对公共 setter 的访问限制为特定对象 (C#) 的相关文章

随机推荐