我有一个像这样结构的界面
public interface IDataContextAsync : IDataContext
{
void DisableGlobalFilter(string filterName);
}
我有一个类使用这样的界面
public class Repository<TEntity> : IRepositoryAsync<TEntity> where TEntity : class, IObjectState
{
private readonly IDataContextAsync _context;
public Repository(IDataContextAsync context)
{
_context = context;
}
public void DisableGlobalFilter(string filterName)
{
_context.DisableGlobalFilter(filterName);
}
}
当我尝试编译时,我得到以下错误
&#39; Repository.Pattern.DataContext.IDataContextAsync&#39;不包含 &#39; DisableGlobalFilter&#39;的定义没有扩展方法 &#39; DisableGlobalFilter&#39;接受第一个类型的参数 &#39; Repository.Pattern.DataContext.IDataContextAsync&#39;可以找到(是 你错过了使用指令或程序集 参考?)
奇怪的是Visual Studio正确显示了智能。我也可以&#34;转到定义&#34;从类到接口正确。
答案 0 :(得分:0)
公平警告:我不是C#家伙,但无论如何请考虑以下事项。
您正在尝试调用不存在的方法。
DisableGlobalFilter()
在IDataContextAsync
界面中声明,但在任何地方都没有定义。您偶然在DisableGlobalFilter()
类中遇到Repository
方法的事实不会改变它:此方法调用_context.DisableGlobalFilter()
,_context
是{{1}的实例1}},就我们通过查看您发布的代码而言,它只是一个界面。
此时,IDataContextAsync
是一个抽象/纯虚方法。
您需要创建一个实际实现 IDataContextAsync::DisableGlobalFilter()
接口的类(包括IDataContextAsync
),然后创建该类的实例,并将此实例作为参数传递到您的DisableGlobalFilter()
构造函数中,在您的帖子中未显示的代码部分。