2013-05-12 74 views
0

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

但我与readonly的问题是,你不能编辑它们,只要你愿意。

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

难道有可能解决这个困境吗?坦诚地说,我对任何事情都是开放的。

+0

的'accesibility'标签是为帮助残疾人。 (标签已移除) – 2013-05-12 15:22:33

回答

1

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

public T MyProperty { get; internal set; } 

您也可以使用其他访问修饰符set,如privateprotected,取决于你的用例。
如果你有不同的设置(如内场),你也可以暴露于该领域的公共的getter:

public T MyProperty { get { return myInternalField; } } 
+0

我解决{get;内部设置;} - 感谢您向我介绍这一点 – Seist 2013-05-12 20:04:56

0

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

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

0

如果您正在使用的属性尝试做如下:

public string Example {get; protected set; } 

public string Example {get; private set; } 

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

+0

我在{get;内部设置;} - 感谢您向我介绍这 – Seist 2013-05-12 13:47:12

相关问题