我有一个名为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>
,例如。当我调用此方法时,未显示定义的类型。
我有办法让它工作吗?