Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#接口方法未保存在.dll中,不是接口的成员_C# - Fatal编程技术网

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:
    }
}