2

私はオブジェクトユーザーを持っています:

 public class User
    {

        public String Name { get; set; }


        public String Name2 { get; set; }


        public String Name3 { get; set; }


    }

また、オブジェクトを作成するときにオブジェクトのプロパティに割り当てる文字列のキー値セットがあります。

'Name':'srgrgsdfsdf'
'Name3':'dsfdsfafafd'
'Name2':'dtewtwerwer'
'Name4':'546353452552'

今、私はこのようにオブジェクトを作成します

  User user = new User();

  user.Name = "zzxasdas";

問題は、Key/Valueデータを動的に割り当てられるようにしたいということです。これは、一部のアイテムが欠落しているか、順序が異なる可能性があることを意味します。

オブジェクトプロパティの名前を動的に確認し、次のようにキーと比較するにはどうすればよいですか?

foreach [key] in Key/Value 
if [user] has property named [key] 
add [value] to [user] property with the name [key] 
4

2 に答える 2

3

これを行うには、 Reflectionを使用する必要があります。

特に、またはは、型で定義されたプロパティに関する情報を検出し、それらの値を取得Type.GetPropertiesまたはType.GetProperty設定できるようにします。

これは次のようになります。

User user = new User();

Type t = user.GetType();
foreach(var kvp in propertyDictionary)
{
    var prop = t.GetProperty(kvp.Key);
    if (prop != null)
       prop.SetValue(user, kvp.Value);
}
于 2012-09-03T17:03:34.260 に答える
0

私の頭に浮かぶことが2つあります。

1つは明らかにReflectionAPIを使用しています。たとえば、user.GetType()。GetProperty()などの場合。

次に、AutoMapperが、あるオブジェクトから同じ名前の別のオブジェクトにプロパティをコピーするソリューションである可能性があります。

于 2012-09-03T17:07:42.490 に答える