var repo = new MyRepo();
repo.RemoveDataRecord<MyProj.Data.Person>(5);
上面从我的linq中的Person表中删除了一条记录到sql repository。
这就是我想做的事情:
var repo = new MyRepo();
repo.RemoveDataRecord<"MyProj.Data.OrderItem">(17);
目的:每个管理页面都有一个记录表,每个记录都有一个“删除”链接,如下所示:
<a href="#" id="17" type="MyProj.Data.OrderItem">delete</a>
所以我可以抓住id和要删除的项目类型。
这可能吗?像repo.RemoveDataRecord&lt;“MyProj.Data.OrderItem”&gt;(17); ?我假设我需要反思。谢谢!
答案 0 :(得分:0)
您可以尝试这样的事情:
首先,让我们获取您的实体类型的类型反映:
var targetEntityType = Type.GetType("MyProj.Data.OrderItem");
然后,我们需要反映一般的RemoveDataRecord方法定义
MethodInfo genericMethodDefinition = typeof(MyRepo).GetMethod("RemoveDataRecord");
请参阅此处,如何以可重复的方式执行此操作:Is there a C# equivalent of typeof for properties/methods/members?
现在,每次你必须调用这个方法时,你应该: 基于泛型方法定义获得泛型方法的反映:
MethodInfo genericMethod = genericMethodDefinition.MakeGenericMethod(targetEntityType);
并调用它:
genericMethod.Invoke(repo, new object[] { 17 });