我的基类是
public abstract class BaseContext {
public void SaveChanges() {
context.SaveChanges();
}
}
我的Drived课程是
public class DriveClass : BaseContext {
}
我有另一个类,它包含调用基类SaveChanges
方法的泛型方法,如
public class AnyClass {
MyMethod<DriveClass>(repo);
private void MyMethod<T>(T repo) {
MethodInfo savech = typeof(T).GetMethod("SaveChanges", new Type[] {});
savech.Invoke(repo, null);
}
}
当我尝试时
GetMethod(“SaveChanges”,new type [] {})
我得到null,这意味着无法调用BaseContext类中的方法。
请提出任何建议,如何从Abstract BaseContext
Class调用方法。
答案 0 :(得分:1)
如评论中所述,因为MyMethod<T>
中的T不限于BaseContext类型,所以不能直接调用SaveChanges方法。
如果您需要使用反射来调用泛型方法中的其他方法,那么您没有正确使用泛型。要么使用没有反射的泛型,要么使用没有泛型的反射。
这可能是一个解决方案:
public class AnyClass {
private void MyMethod<T>(T repo) where T : BaseContext {
repo.SaveChanges();
}