我有一个名为NIFERepository. 它包含一个SaveObject方法,该方法不返回任何内容并对数据库执行操作。
public class NIFERepository<E>
{
protected void SaveObject(object saveObject)
{
if (saveObject is E)
this.RepositorySession.Merge(saveObject);
}
}
1. 我希望创建一个调用此SaveObject()方法的公共扩展方法,如下所示:
public static class NIFERepositoryExtensions
{
public static T Save<T, E>(this T self, E saveObject) where T : NIFERepository<E>
{
self.SaveObject(saveObject);
return self;
}
}
但是受保护的范围不允许我的扩展方法识别它。
有没有办法让这种形式的方法起作用?
2. 我用 2 种类型创建了我的扩展方法:T和E. T是调用它的实例,并且E是 my 中定义的类型ProductRepository<Product>,例如。当我调用此方法时,未显示定义的类型。

我有办法让它工作吗?