首页 > 解决方案 > 如何使用反射获取属性?

问题描述

我需要System.Data.SqlClient从我的项目中删除任何引用。我使用它的唯一实例是获取错误列表,例如:

if (ex is SqlException)
{
    var spx = ex as SqlException;
    if (spx.Errors != null)
    {
        for (int i = 0; i < spx.Errors.Count; i++)
        { 
            var sqlError = spx.Errors[i];
        }
    }
}

是使用Reflection和调用的唯一替代方法,GetProperty如下所示:

if (ex.GetType().Name == "SqlException")
{
    var errors = ex.GetType().GetProperty("Errors");
    if (errors != null)
    {}
}

标签: c#reflection

解决方案


这绝对是异常处理的问题。首先,有一份分类清单和一套好的指导方针。这两个人帮助了我,我认为他们是主题上的“必读”。

你在那里做的很多事情看起来都很关键。你追得上宽。然后使用 is 按类型过滤。但是你永远不会抛出错误的异常。

您的主要担心似乎是代码调用您的代码必须处理SqlException,因为添加参考由于某种原因不可用。通常的解决方案是制作自己的异常类,并将 Sql 放入内部异常中。上面的指南包含了我可以给你的所有细节。


推荐阅读