在我的 C# DLL 中,我希望属性对外部应用程序可读,但不可编辑。有点像readonly
和internal
-readonly
对于外部应用程序和internal
DLL 的组合。
但我遇到的问题readonly
是你不能随意编辑它们。
我遇到的问题internal
是它完全隐藏了外部程序的属性。
有没有可能解决这个困境?老实说,我对任何事情都持开放态度。
如果您正在使用属性,则可以对get
andset
方法使用不同的访问修饰符:
public T MyProperty { get; internal set; }
根据您的用例,您还可以使用其他访问修饰符set
,例如private
or 。
如果您有不同的设置(如内部字段),您还可以为该字段公开一个公共 getter:protected
public T MyProperty { get { return myInternalField; } }
你能用版本包装你的internal
变量吗?readonly
然后外部客户端只能看到readonly
版本。
(我假设这些变量是属性?)
如果您正在使用属性,请尝试执行以下操作:
public string Example {get; protected set; }
或者
public string Example {get; private set; }
第一个将允许由子类设置属性,而第二个则不允许。这将允许您在类中设置属性,但 dll 的用户将能够以只读方式访问该属性。您还可以添加内部方法,以便其他类可以在 DLL 中修改该状态,但任何引用它的人都无法修改。