C# 如何创建仅在owner类之外才允许设置访问器的属性

C# 如何创建仅在owner类之外才允许设置访问器的属性,c#,.net,properties,C#,.net,Properties,我需要一个属性,其中集合只能从构造函数或所有者类外部访问(不能在类方法内更改)。与私人修饰语相对的事物。有什么建议吗?这有点奇怪。因为您是创建类的人……请将其公开,并且不要从类内部接触属性(如果您确保在对当前类调用方法时编写单元测试来测试不变量,则这可能适用)。但是…如果您真的想要这样的东西,我想您需要将属性包装到其他类中,这些类只能通过当前类上的setter方法访问。或者类似的东西。如果您有一个类需要依赖的变量,但无法更改,它似乎属于其他类或结构,而您的类只有一个引用。您是设计该类的人,不是吗

我需要一个属性,其中集合只能从构造函数或所有者类外部访问(不能在类方法内更改)。与私人修饰语相对的事物。有什么建议吗?

这有点奇怪。因为您是创建类的人……请将其公开,并且不要从类内部接触属性(如果您确保在对当前类调用方法时编写单元测试来测试不变量,则这可能适用)。但是…如果您真的想要这样的东西,我想您需要将属性包装到其他类中,这些类只能通过当前类上的setter方法访问。或者类似的东西。

如果您有一个类需要依赖的变量,但无法更改,它似乎属于其他类或结构,而您的类只有一个引用。

您是设计该类的人,不是吗。。不在课堂上使用它?听起来不可能。这听起来也像是一个迹象,表明总体设计中有其他奇怪的问题。你为什么要这样做?我想也许你可以使用一个setter,它使用反射来检查调用方的类型?当然,那么对象可以直接设置backing字段,所以没有任何好处。我需要它,因为这个属性是用于业务级逻辑的,我不想在内部方法中意外地更改它并破坏上层逻辑。然后不要意外地更改它。您只需选择变量find all references.NET中的可访问性是基于信任的。在任何情况下,您都可以信任您所不了解的代码,而不仅仅是您自己的代码。这显然没有道理。