WP7アプリをwin8ストアアプリに移植する際に問題が発生しました...
このコードを実行して、XMLファイル内の要素からフィールドにデータを入力します。
Venue lv = new Venue();
foreach (var t in Fields)
{
foreach (var f in t.Elements())
{
lv.SaveData(f.Attribute("name").Value, f.Value, lv);
}
}
データクラス:
public class Venue //: INotifyPropertyChanged
{
public string updated_at { get; set; }
public string name { get; set; }
public string authority { get; set; }
public string organisation { get; set; }
public string control_type { get; set; }
}
SaveDataメソッドを実行します。
public void SaveData(string field, string value, Venue v)
{
foreach (MemberInfo mi in v.GetType().GetTypeInfo().GetMembers())
{
if (mi.MemberType == MemberTypes.Property)
{
PropertyInfo pi = mi as PropertyInfo;
if (pi.Name == "Coordinate")
continue;
if (pi.Name == field)
{
pi.SetValue(v, value, null);
}
}
}
}
問題は、GetMembers定義がWinRTに存在しないため、同じプロパティを公開するための代替手段を見つけるか、システムを書き換える方法を見つける必要があるということです。
私はこのコードを自分で書いたわけではありませんが、それが何をしているのかはほぼ理解できます。読んだばかりの基本的な紹介を除けば、リフレクションについてはあまり詳しくありません。クイックフィックス