可在内部编辑,但仍可在外部查看?

时间:2013-05-12 04:18:50

标签: c# keyword readonly internal

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

但我对readonly的问题在于您无法随意编辑它们。

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

有可能解决这个难题吗?老实说,我对任何事情持开放态度。

3 个答案:

答案 0 :(得分:1)

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

public T MyProperty { get; internal set; }

您还可以使用set的其他访问修饰符,例如privateprotected,具体取决于您的使用情况。
如果您有不同的设置(如内部字段),您还可以为该字段公开一个公共getter:

public T MyProperty { get { return myInternalField; } }

答案 1 :(得分:0)

您可以使用internal版本包装readonly变量吗?然后外部客户端只能看到readonly版本。

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

答案 2 :(得分:0)

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

public string Example {get; protected set; }

public string Example {get; private set; }

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