私はJava Webサービスを持っており、.NETでクライアントを実装しています。今私はこれに似た問題がある:Java Webservice and .NET client dropping DateTime objects。 プロパティに値があるときにフラグを設定する方法は分かっていますが、そのフラグを自動的に設定するメソッドが必要です。例えば、(私は読みやすさを高めるために、属性を削除):メソッドプロパティ値に応じてフラグを設定するもの
public class MyClass
{
private System.DateTime endDateTimeField;
private bool endDateTimeFieldSpecified;
private System.DateTime startDateTimeField;
private System.DateTime firstDriverStartField;
private System.DateTime firstDriverEndField;
private System.DateTime secondDriverStartField;
private bool secondDriverStartFieldSpecified;
private System.DateTime secondDriverEndField;
private bool secondDriverEndFieldSpecified;
private string exciseNumberField;
private double gasCounterEndField;
private double gasCounterStartField;
private string idField;
private double mileageStartField;
private double mileageEndField;
private obtcStatus obtcStatusField;
private string secondDriverField;
}
すべてのプロパティの単純なタイプでは、自動的に指定した「MYPROPERTY」+を追加しました。 オブジェクト全体をチェックするメソッド、またはMyProperty/MyPropertySpecifiedペアがあり、MyPropertyがnull以外の値に設定されている場合は、MyPropertySpecifiedフラグをtrueに設定するメソッドが必要です。
編集: 私の問題の懸念事項フィールド: プライベートSystem.DateTime endDateTimeField; プライベートbool endDateTimeFieldSpecified;
private System.DateTime secondDriverStartField; プライベートbool secondDriverStartFieldSpecified;
private System.DateTime secondDriverEndField; プライベートbool secondDriverEndFieldSpecified;
おそらく私はこのようなものを使用することができます。
パブリック静的ボイドSetProperyValue(オブジェクトobj) { IEnumerableを小道具= obj.GetTypeを()GetPropertiesの() .Where(X => x.Name = = "endDateTimeField" || x.Name == "endDateTimeFieldSpecified");
if (props?.Count() == 2 &&
props.FirstOrDefault(x => x.Name == "endDateTimeField").GetValue(obj) != null)
props.FirstOrDefault(x => x.Name == "endDateTimeFieldSpecified").SetValue(obj, true);
}
しかし、私は(より良いあなたの質問を明記してください)私はあなたが正確に何をしたいかわからない剛性
私はあなたがプロパティ名を知らなくても方法が必要な場合は、 –
あなたはこれまでに何を試しましたか? – Sefe
@Newer:私の質問にお答えできますか?コンパイル時にプロパティの名前を知っていますか?それ以外の場合は、関連するvalue-propertyのタイプを見つけることは困難です。 'Int'型(' System.Int32'です)がないからです。したがって、略称を実際の.NETタイプに変換するための辞書も必要です。 –