c# - 获取对象类的类型、属性和值

标签 c# .net

有点晦涩,当然强类型会在这里有所帮助,但我不能在短时间内解决这个问题。

假设我有这个方法:

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/

相关文章:

c# - Enumerable.Cast<T> 是否复制对象?

c# - 具有 SSL 连接的 RabbitMQ 客户端抛出 SSPI 异常

c# - 替换字符串 C# 中的换行符

.Net 反射来获取类/属性等的描述?

c# - 在 youtube api .net 中按 ID 获取 youtube 播放列表

c# - 如何在 'CollectionEditor' 对话框中启用属性的默认值

.net - 从 iis 8.5 windows server 2012 上的 asp.net core 应用程序获取 500 错误代码,但在控制台上工作正常

c# - Excel VB.Net 中的分页符

c# - 从 System.Drawing.Bitmap 加载 WPF BitmapImage

c# - 我应该让我的对象属性可以为 null 还是为每种类型使用 CLR 默认值?