1

私はこのようなクラス構造を持っています:

空間 --> ServiceRequest --> ServiceRequestSystemX

ServiceRequestSystemX のリストを返すメソッドを作成しました。データは、空間情報が格納されている場所とは別に保持されます。そのため、タイプ ServiceRequestSystemX の新しいオブジェクトを作成するたびに、別のインターフェイスを呼び出して、そのサービス リクエストの Spatial オブジェクトを返します。

ServiceRequestSystemX は最終的に Spatial から派生するため、Spatial オブジェクトを ServiceRequestSystemX オブジェクトにマージするだけで済む簡単な方法はありますか?

ServiceRequestSystemX.X_Coordinate = Spatial.X_Coordinate;

これは退屈で不必要だと思います。

4

2 に答える 2

4

派生型として、ServiceRequestSystemX は、Spatial クラスによって公開される基本メンバーを既に公開しています。

于 2013-02-26T11:41:53.107 に答える
0

私の最初の回答のコメントに基づいて、リフレクションを使用して 2 つのオブジェクトをマージしてみてください。しかし、私はこれを汚いハックと呼んでいます。

public static class ExtensionMethods
{
    public static TEntity CopyTo<TEntity>(this TEntity OriginalEntity, TEntity NewEntity)
    {
        PropertyInfo[] oProperties = OriginalEntity.GetType().GetProperties();

        foreach (PropertyInfo CurrentProperty in oProperties.Where(p => p.CanWrite))
        {
            if (CurrentProperty.GetValue(NewEntity, null) != null)
            {
                CurrentProperty.SetValue(OriginalEntity, CurrentProperty.GetValue(NewEntity, null), null);
            }
        }

        return OriginalEntity;
    }
}

このコードは、ここにある別の投稿から取得したものです。

于 2013-02-26T11:56:13.653 に答える