良い選択肢は、Builderパターンを使用することです。それはこのような何かを見ても、あなたの場合はhttp://www.dofactory.com/net/builder-design-pattern
:
はここで、パターンのいくつかのより多くの情報へのリンクです
class ReferenceDataBuilder
{
private Complex1 prop1;
private Complex2 prop2;
private Complex3 prop3;
public ReferenceDataBuilder setProp1 (Complex1 value)
{
this.prop1 = value;
return this;
}
public ReferenceDataBuilder setProp2 (Complex2 value)
{
this.prop2 = value;
return this;
}
public ReferenceDataBuilder setProp3 (Complex3 value)
{
this.prop3 = value;
return this;
}
public ReferenceData make()
{
return new ReferenceData(prop1, prop2, prop3);
}
}
class ReferenceData
{
public Complex1 Prop1{ get; }
public Complex2 Prop2{ get; }
public Complex3 Prop3{ get; }
public ReferenceData(Complex1 prop1, Complex2 prop2, Complex3 prop3)
{
this.Prop1 = prop1;
this.Prop2 = prop2;
this.Prop3 = prop3;
}
}
このデザインは、あなたがすでに使用している可能性があり何の上にいくつかの利点があります。まず、このパターンでは、ReferenceData
を不変に保ち、ビルドのすべての状態をビルダークラス(ReferenceData
のインスタンスを取得するのに十分な長さでなければなりません)に移動します。さらに、ReferenceData
のインスタンスが作成される前にプロパティが正しく設定されていることを確認するために、Builderでよりクリーンな検証コードを使用することができます。また、Complex1
、Complex2
、およびComplex3
データ型のBuilderを作成し、それらをReferenceData Builderと一緒に使用して、インスタンス作成をさらに簡素化することもできます。
あなたはこのようなビルダーを使用したい:あなたが持っているものと間違って何
ReferenceData refdata = (new ReferenceDataBuilder())
.setProp1((new Complex1Builder()).SomeValue("a").build())
.setProp2((new Complex2Builder()).SomeOtherValue("b"))
.setProp3("Some third value")
.build();
出典
2016-06-18 19:20:16
Ben
?ここで解決すべき明確な問題があるかどうかはわかりません。 – blins
このモデルは〜20のプロパティを持っているので私はモデルクラスのReferenceDataしか持っていません。このモデルにデータをロードするためのクリーンな方法が必要です。 ReferenceDataオブジェクトを返します。 – Deepak
[Fluentインターフェイス](https://en.wikipedia.org/wiki/Fluent_interface)を参照してください。 –