是否可以使用反射来获取基类中的属性名称和值?

Mik*_*ike 1 .net reflection inheritance

我使用以下代码将对象及其所有属性保存到数据库.它使我不必在每个业务对象中创建一个save方法.我的基类中的代码是:

    public void Save()
    {
        List<SqlParameter> Params = new List<SqlParameter>();
        foreach (PropertyInfo Property in this.GetType().GetProperties())
        {
            if (Property.CanRead)                
                Params.Add(new SqlParameter(Property.Name,Property.GetValue(this,null)));                
        }
        Execute<int>(SaveProcedure, Params.ToArray());        
    }
Run Code Online (Sandbox Code Playgroud)

这是一个很好的做法,还是我最好不要在我创建的每个对象中使用反射和创建保存方法?

任何其他想法或建议表示赞赏,谢谢!

Dan*_*plo 7

看起来你正在创建自己的基本ORM.您是否考虑过使用专门为.NET框架编写的任何完全成熟的映射器来执行此任务,例如LinqToSqlNHibernate