有点晦涩,当然强类型会在这里有所帮助,但我不能在短时间内解决这个问题。
假设我有这个方法:
public static void MyMethod(string words, object params)
{
connection.Open();
connection.Execute(words, params);
}
我正在寻找一种方法来在运行时记录正在传入的 params
属性和值。我可以获取属性但无法找到提取值的方法。我假设使用了反射,但如果对象是强类型的,我只会知道如何执行此操作。
最佳答案
您可以使用反射来完成此操作(Logger
类基于您自己的实现,仅用于示例目的):
public static void MyMethod(String words, Object obj)
{
if (obj == null)
throw new ArgumentNullException("obj");
Type objType = obj.GetType();
List<PropertyInfo> props = new List<PropertyInfo>(objType.GetProperties());
Logger.Log(
"Object of type '{0}' with properties:",
objType.ToString()
);
foreach (PropertyInfo prop in props)
{
Logger.Log(" - {0} [Type = {1}] [Value = {2}]",
prop.Name,
prop.PropertyType,
prop.GetValue(this, null)
);
}
connection.Open();
connection.Execute(words, obj);
}
主要文档引用:
关于c# - 获取对象类的类型、属性和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47602051/