0

私は2つのドメインクラスを持っています

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Address Address { get; set; }

}
public class Address
{
    public string HouseName { get; set; }
    public string StreetName { get; set; }
    public string PinCode { get; set; }
}

Employee クラスのオブジェクトを別のクラスにマップしたい。リフレクションを使用して empData オブジェクトを別のオブジェクトにマップしています。私が使用したコードは

private void GetValues(object empData)
{
    System.Type type = empData.GetType();

    foreach (PropertyInfo pInfo in type.GetProperties())
    {
        //do some stuff using this pInfo. 
    }
}

別のクラスのオブジェクトである emp オブジェクトの Address プロパティを除くすべてのプロパティを簡単にマップできます。では、そのタイプに関係なく、すべてのプロパティをどのようにマップできますか? つまり、アドレスに別のクラスのオブジェクトが含まれる場合、それもマップされる必要があります。

4

3 に答える 3

1

クラスのマッピングにAutoMapperを使用できませんか?

于 2012-07-26T07:19:45.107 に答える
0

マッピングしているプロパティのタイプを知ることができます

if (propertyInfo.PropertyType == typeof(Address))
    { // do now get all properties of this object and map them}
于 2012-07-26T07:20:27.520 に答える
0

この特定のオブジェクトだけでなく、任意のタイプのオブジェクトでこれを実行できるようにしたい場合は、何らかの再帰的なソリューションを使用する必要があります。ただし、それがこのオブジェクトのためだけである場合、なぜ反射を使用しているのですか? 私にとっては、6 つのプロパティを別のオブジェクト セットにマッピングするような単純なものに、不必要な複雑さが加わるだけです。

コード例でより具体的なヘルプが必要な場合は、さらにコンテキストを提供する必要があります。「GetValues」という名前のメソッドの戻り値の型が void になるのはなぜですか? それを念頭に置いて例をコーディングするのに苦労しています。:)

于 2012-07-26T07:21:52.280 に答える