C# 内部可编辑,但外部仍可见?
在我的C#DLL中,我希望属性对外部应用程序可读,但不可编辑。有点像外部应用程序的C# 内部可编辑,但外部仍可见?,c#,keyword,readonly,internal,C#,Keyword,Readonly,Internal,在我的C#DLL中,我希望属性对外部应用程序可读,但不可编辑。有点像外部应用程序的只读和内部-只读,以及DLL的内部的组合 但是只读的问题是,你不能随心所欲地编辑它们 而internal的问题是,它将属性完全隐藏在外部程序中 有可能解决这一困境吗?老实说,我对任何事情都持开放态度。你能用只读版本包装你的内部变量吗?然后外部客户端只能看到只读版本 (我假设这些变量是属性?如果使用属性,请尝试执行以下操作: public string Example {get; protected set; }
只读
和内部
-只读
,以及DLL的内部
的组合
但是只读的问题是,你不能随心所欲地编辑它们
而internal
的问题是,它将属性完全隐藏在外部程序中
有可能解决这一困境吗?老实说,我对任何事情都持开放态度。你能用只读版本包装你的内部变量吗?然后外部客户端只能看到只读版本
(我假设这些变量是属性?如果使用属性,请尝试执行以下操作:
public string Example {get; protected set; }
或
第一个允许通过子类设置属性,而第二个不允许。这将允许您在类内设置属性,但dll的用户将能够以只读方式访问该属性。您还可以添加内部方法,以便其他类可以在DLL中修改该状态,但引用该状态的任何人都无法修改。如果您使用的是属性,则可以对get
和set
方法使用不同的访问修饰符:
public T MyProperty { get; internal set; }
根据您的使用情况,您还可以使用其他访问修饰符进行设置
,例如私有
或受保护
。
如果您有不同的设置(如内部字段),还可以为该字段公开一个公共getter:
public T MyProperty { get { return myInternalField; } }
我选择了{get;internal set;}-感谢您向我介绍这个accessibility
标签是关于帮助残疾人的。(标记已移除)我决定使用{get;internal set;}-感谢您向我介绍这个
public T MyProperty { get { return myInternalField; } }