2017-11-07 7 views
0

私は、Scheduleオブジェクトで動作するWCFベースのC#CRUD REST APIを持っています。期待どおりに作成、更新、削除する方法があります。CRUD REST API - C#obejct自体を "作成"する人はいますか?

私の問題は、ScheduleオブジェクトにTriggerInfoサブオブジェクトが含まれていることです。コンストラクタを呼び出すだけでは、実際にはプロキシのコンストラクタが呼び出され、実際のコンストラクタは呼び出されないので、サブオブジェクトは初期化されません。

WCFが発行するプロキシはTriggerInfoをフィールドとして持っていますが、実際のクラスのコンストラクタロジックは決して呼び出されないため、常にnullになります。

つまり、クライアントがC# 'Schedule'オブジェクトを作成すると、実際には実際のScheduleクラスのプロキシが作成され、プロキシは何も初期化する必要はありません。

このような鶏卵の状況では、クライアントが「記入」できるC#「スケジュール」オブジェクトを作成するのは誰ですか?

私はC#クライアントがScheduleオブジェクトを作成し、すべてのプロパティを入力してCreateSchedule()APIに渡して動作すると思っていました。それほど簡単ではありません!

TriggerInfoプロパティのすべてがScheduleオブジェクトのプロパティであった大きなフラットなモノリシッククラスを作成した場合はうまくいくが、特に複数のサブクラスがある場合はあまり整頓されていない。

APIの公開方法を知っているScheduleFactoryオブジェクトを公開できますが、それが有効な方法かどうかはわかりません。

答えて

1

それはどんな自明の初期化を必要とする場合のスケジュールオブジェクトのクライアント側を作成しないでください - ちょうどあなたのWCFサービスへメソッドを作成し、それをサーバー側を行う新しいを追加したり、。また、新しいスケジュール()クライアント側を使用して、多くのnullプロパティを持つ新しいプロキシインスタンスを取得し、これらのプロパティをサーバー側の適切なデフォルト値で保存します。メソッドを保存します。

+0

空のスケジュールを適切に初期化したサービスAPIにCreateSchedule()を追加しました。それはうまくいくようです。 ただし、呼び出し元がCreate呼び出しに一意のIDを渡す必要がありますか?スケジュール名が一意の値である場合と同様に、作成呼び出しのスケジュール名を指定する必要がありますか?または、返されたオブジェクトが完全に空である必要がありますし、ユニークなIDを記入してから更新を行う必要がありますか? – Dave

関連する問題