我正在使用.Net Connector 6.3.6开发MySQL,并在VS 2010上创建实体模型。我计划编写一个泛型方法,将EntityObject添加到其对应的表中。下面是它的外观:

    public void AddToTable(ObjectContext dataContext, string tableName, EntityObject tableObj)
    {
                try
                {
                    Type type = dataContext.GetType();
                    string methodName = "AddTo" + tableName;
                    MethodInfo methodInfo = type.GetMethod(methodName);
                    PropertyInfo propInfo = dataContext.GetType().GetProperty(tableName);
                    Object[] parameters = new Object[] { Convert.ChangeType(tableObj, propInfo.PropertyType) };
                    methodInfo.Invoke(dataContext, parameters);
                }
                catch (Exception e)
                {

                  edit://gonna handle it appropriately here!
                }
     }

ObjectContext将是实际的ObjectContext类。
但是当我在EntityObject上使用Covert.ChangeType()时,出现了一个异常,说“object必须实现IConvertible”。
如何克服这个问题?
编辑:仅供参考,我的主要目的是让编写一个尽可能通用的方法,这样就不需要强制转换到特定的表类型。
谢谢,
警报器

最佳答案

你在重新发明轮子。

 public void AddToTable<TEntity>(ObjectContext dataContext, TEntity tableObj)
 {
     dataContext.CreateObjectSet<TEntity>().AddObject(tableObj);
 }

请不要吃例外。

关于mysql - EntityObject上的Convert.ChangeType(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5166005/

10-09 06:22