0

在我的 C# DLL 中,我希望属性对外部应用程序可读,但不可编辑。有点像readonlyinternal-readonly对于外部应用程序和internalDLL 的组合。

但我遇到的问题readonly是你不能随意编辑它们。

我遇到的问题internal是它完全隐藏了外部程序的属性。

有没有可能解决这个困境?老实说,我对任何事情都持开放态度。

4

3 回答 3

1

如果您正在使用属性,则可以对getandset方法使用不同的访问修饰符:

public T MyProperty { get; internal set; }

根据您的用例,您还可以使用其他访问修饰符set,例如privateor 。 如果您有不同的设置(如内部字段),您还可以为该字段公开一个公共 getter:protected

public T MyProperty { get { return myInternalField; } }
于 2013-05-12T04:29:13.633 回答
0

你能用版本包装你的internal变量吗?readonly然后外部客户端只能看到readonly版本。

(我假设这些变量是属性?)

于 2013-05-12T04:21:48.823 回答
0

如果您正在使用属性,请尝试执行以下操作:

public string Example {get; protected set; }

或者

public string Example {get; private set; }

第一个将允许由子类设置属性,而第二个则不允许。这将允许您在类中设置属性,但 dll 的用户将能够以只读方式访问该属性。您还可以添加内部方法,以便其他类可以在 DLL 中修改该状态,但任何引用它的人都无法修改。

于 2013-05-12T04:28:20.413 回答