是否有C#相当于Python的__dict__

时间:2017-10-05 18:30:55

标签: c# python

当试图查看已经实例化的给定类的所有实例attrs时,我可以在python中执行此操作:

myObject.__dict__查看为此实例存储的所有键/值对。

可以在C#中完成吗?

2 个答案:

答案 0 :(得分:2)

不完全重复,所以我不会这样做,但请看How to get the list of properties of a class?。有一些很好的例子来说明如何使用Reflection库。例如,您可以使用myObject.GetType().GetProperties()。这仅返回至少具有一个访问者(getset)的属性。因此,返回时不会包含public int num = 0的实例,但会public int num {get; set;} = 0

反射库中的

Type.GetFields()Type.GetField(string)也可能与您正在寻找的内容接近。例如:

Type t = typeof(myType);
FieldInfo[] arr = t.GetFields(BindingFlags.Public|BindingFligs.NonPublic);
var newInstance = new myType();
foreach (FieldInfo i in arr) 
{ 
    Console.WriteLine(i.GetValue(newInstance));
}

答案 1 :(得分:0)

我不确定任何具体的方法。但是,您可以对对象进行JSON编码并将其打印为类似的概念。

var jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string json = jsonSerializer.Serialize(yourDictionary);
//output json

也许值得让它做一个“漂亮的印刷品”,因此它更容易阅读:

How do I get formatted JSON in .NET using C#?

这使用JSON.net,但无论如何我更喜欢它:

string json = JsonConvert.SerializeObject(yourDictionary, Formatting.Indented);
Console.WriteLine(json);