2014-03-13 40 views
1

我想用C#实现一个简单的sprite动画框架。我有一些有getter和setter的类。对我来说,使用这个getters和setter是可以的,但是这个框架的用户不应该看到并使用这个setter。我怎样才能做到这一点?防止类的用户使用setter

+0

使setter私人 –

+0

@ratchetfreak但我使用这个setter。 – Cem

回答

10

检出internal辅助功能修饰符,类似于publicprivate,但允许访问修改后的属性仅用于编译为相同程序集的一部分的代码。你只能在setter上指定它,就像使用private一样。

public string MyProperty {get; internal set;} 

当然,这并不完美。如果你自己的框架由几个组件组成,他们也会遇到可访问性问题。一种选择是相应地构建解决方案。另一种方法是使用InternalsVisibleTo属性,该属性允许程序集显式地将外部程序集命名为“朋友”,从而允许其访问其成员的internal

+0

假设我不会在另一个项目中使用此setter,内部将解决我的问题。我理解正确吗? – Cem

+0

是的。我发布的(更新的)代码片段将允许任何人访问getter,并且只通过编译在同一个DLL/EXE中的代码来设置setter。 –

1

我很喜欢使用显式接口来处理这种情况......但是如果框架包含在一个单独的程序集中,“内部”显然会完成这项工作。