我正在使用.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/