在我的C#DLL中,我希望属性对外部应用程序可读,但不可编辑。有点像readonly
和internal
- readonly
与外部应用程序和internal
到DLL的组合。
但我对readonly
的问题在于您无法随意编辑它们。
我对internal
的问题是它完全隐藏了属于外部程序的属性。
有可能解决这个难题吗?老实说,我对任何事情持开放态度。
答案 0 :(得分:1)
如果您正在使用属性,则可以为get
和set
方法使用不同的访问修饰符:
public T MyProperty { get; internal set; }
您还可以使用set
的其他访问修饰符,例如private
或protected
,具体取决于您的使用情况。
如果您有不同的设置(如内部字段),您还可以为该字段公开一个公共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中的状态,但任何引用它的人都无法。