C#接口方法未保存在.dll中,不是接口的成员
对于我放在接口中的方法,我一直收到一个“不是接口的成员”,请参见下面的代码:C#接口方法未保存在.dll中,不是接口的成员,c#,C#,对于我放在接口中的方法,我一直收到一个“不是接口的成员”,请参见下面的代码: public interface IDepartmentDataSource { IQueryable<Employee> Employees { get; } IQueryable<Department> Departments { get; } void Save(); } 这是当我得到错误时,我可以看到员工和部门,但不能看到保存。当我转到定义的元数据时,也没有看到
public interface IDepartmentDataSource
{
IQueryable<Employee> Employees { get; }
IQueryable<Department> Departments { get; }
void Save();
}
这是当我得到错误时,我可以看到员工和部门,但不能看到保存。当我转到定义的元数据时,也没有看到其中的Void Save(),但它在我的接口文件中
有人能帮我弄点光吗,谢谢
更新::这是我在说导航到定义时看到的,即使我删除了.dll并重新生成,我也会收到同样的结果
#region Assembly eManager.Domain.dll, v1.0.0.0
// C:\PluralSight\eManager\eManager.Web\bin\eManager.Domain.dll
#endregion
using System.Linq;
namespace eManager.Domain
{
public interface IDepartmentDataSource
{
IQueryable<Department> Departments { get; }
IQueryable<Employee> Employees { get; }
}
}
#区域程序集eManager.Domain.dll,v1.0.0.0
//C:\PluralSight\eManager\eManager.Web\bin\eManager.Domain.dll
#端区
使用System.Linq;
命名空间eManager.Domain
{
公共接口IDepartmentDataSource
{
IQueryable部门{get;}
IQueryable雇员{get;}
}
}
尝试隐式而非显式地实现该功能,否则只有在将对象转换为IDepartmentDataSource时,您才会看到它:
public interface IDepartmentDataSource
{
IQueryable<Employee> Employees { get; }
IQueryable<Department> Departments { get; }
void Save();
}
public class TestClass : IDepartmentDataSource
{
public IQueryable<Employee> Employees
{
get { /* TODO: */}
}
public IQueryable<Department> Departments
{
get { /* TODO: */ }
}
public void Save()
{
//TODO:
}
}
公共接口IDepartmentDataSource
{
IQueryable雇员{get;}
IQueryable部门{get;}
作废保存();
}
公共类TestClass:IDepartmentDataSource
{
公营机构雇员
{
获取{/*TODO://}
}
公共卫生部门
{
获取{/*TODO://}
}
公共作废保存()
{
//待办事项:
}
}
在NSGaga的帮助下,我查看了我的配置和项目设置,很明显这不是代码问题,而是Visual Studio引用其他.dll的问题。我的解决方案是快速而肮脏的方法,应该只用于让事情进展顺利。被调用的.dll来自obj文件夹,该文件夹由于任何原因都不会更新,而且,它们是一些临时生成的文件,正在处理中。我只是简单地删除了这些,知道它们将在下一个构建中生成,然后让它运行
感谢NSGaga的洞察力 显而易见的猜测-您是否尝试过清理/重建?是的,删除旧引用进行了生成并将其添加到中。但结果相同。您确定只有一个名为
IDepartmentDataSource
的类型吗?您应该隐式实现Save,否则您需要将类强制转换为IDepartmentDataSource类型才能访问成员。考虑到编辑,它似乎针对的是不同的dll(看起来很熟悉,但记不清确切情况,可能是不同的东西)-可能是配置方面的问题,你的目标.NET是什么(两者都有)。更改其他东西,我不知道,命名以确认这一点。然后尝试将问题本地化。尝试构建一个只包含相关部分的新小项目,你很快就会发现问题
public interface IDepartmentDataSource
{
IQueryable<Employee> Employees { get; }
IQueryable<Department> Departments { get; }
void Save();
}
public class TestClass : IDepartmentDataSource
{
public IQueryable<Employee> Employees
{
get { /* TODO: */}
}
public IQueryable<Department> Departments
{
get { /* TODO: */ }
}
public void Save()
{
//TODO:
}
}