これに対する解決策を見つけようとしましたが、できません。次のクラスとプログラムが与えられます。
[Serializable]
public class SomeClass
{
public string OneProp { get; set; }
public string TwoProp { get; set; }
public string OneField;
public string TwoField;
}
[Serializable]
public class Class1
{
public static string gsFoo { get; set; }
public static string gsGar { get; set; }
public static string gsFooField;
public static string gsGarField;
public static SomeClass someClass = new SomeClass();
}
public class Program
{
private static void PrintValues(Type type)
{
foreach (var field in type.GetFields())
{
Console.WriteLine("{0}={1}", field.Name, field.GetValue(null));
var v = field.GetValue(null);
}
foreach (var prop in type.GetProperties())
{
Console.WriteLine("{0}={1}", prop.Name, prop.GetValue(type, null));
var v = prop.GetValue(null,null);
}
}
static void Main(string[] args)
{
Class1.gsGar = "gar prop";
Class1.gsFoo = "foo prop";
Class1.gsFooField = "foo field";
Class1.gsGarField = "gar field";
Class1.someClass.OneField = "1 field";
Class1.someClass.TwoField = "2 field";
Class1.someClass.OneProp = "1 prop";
Class1.someClass.TwoProp = "2 prop";
PrintValues(typeof(Class1));
while (true)
{
}
}
}
Class1.SomeClass のプロパティとフィールドを設定した場合、Class1 をシリアル化し、SomeClass の名前/値を次のように表示するにはどうすればよいですか。
Class1.SomeClass.OneProp = "1 prop"
Class1.SomeClass.TwoProp = "2 prop"
Class1.SomeClass.OneField = "1 field"
Class1.SomeClass.TwoField = "2 field"
GetType() と GetValue() を使用してカスタム型ではない他の静的型の FieldInfo と PropertyInfo から名前/値を取得できますが、この場合、FieldInfo (間違っていなければ) はこのカスタム型のメタデータです。 、しかし、その中にあるメンバー型の名前と値を取得する方法がわかりません。
これが理にかなっていることを願っています...