如何强制客户端设置某些属性

cja*_*cja 3 c#

我的类有十个属性,必须先设置才能使用该类.

我想强制(或者至少非常强烈地鼓励,最好是警告)我的类的用户在调用类的任何方法之前设置这些属性.

我可以使用一个构造函数,它将所有属性的值作为参数,但我不想这样,因为很多参数都很难处理.

我可以检查类的所有方法中的属性值,但这太晚了 - 我想要编译时检查.

我能做什么?

Sti*_*gar 6

也许您可以使用流畅的界面使用Builder Pattern的一些变体.你可以有一些步骤或某些你不能跳过某些属性的东西.例如,要设置构建器的属性Y,您将需要由设置属性X的方法返回的对象.

new Builder().SetX(10).SetY(20) //compiles because SetX returns a class with SetY method
new Builder().SetY(20) //does not compile because the builder only has SetX method
Run Code Online (Sandbox Code Playgroud)

为避免出现多个类,您可能会有一个具有多个接口的类,每个接口只暴露一个方法.

另一方面,即使有很多参数,我也可能会去构造函数