【问题标题】:Does not implement interface member - Even though I have implemented the member不实现接口成员 - 即使我已经实现了该成员
【发布时间】:2020-08-06 19:09:36
【问题描述】:

我是 C# 新手。我在提供的一些示例代码之上添加了我自己的代码。 GetFilterFileAndRelatedFiles 是我的代码。

即使我已确保方法已实现且返回类型有效,但仍收到以下错误消息。

如果我删除函数定义,那么 IDE 会抱怨接口未实现,所以我知道我正在正确实现接口,因为 IDE 没有抱怨。

错误 CS0535 'TradeLogDataService' 未实现接口成员 'ITradeLogDataService.GetFilterFileAndRelatedFiles(string)' FileInsight FileInsight\TradeLogDataService.cs

这是界面:

using FileInsight.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace FileInsight.Services
{
    public interface ITradeLogDataService
    {
        Task<IEnumerable<DeepDiveSetting>> GetDeepDiveSettingByLogFolderID(int logFolderID);
        Task<IEnumerable<FilterFileAndRelatedFiles>> GetFilterFileAndRelatedFiles(string searchString);
    }
}

这是实现接口的类:

using FileInsight.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace FileInsight.Services
{
    public class TradeLogDataService : BaseDataService, ITradeLogDataService
    {
        private readonly ITradeLogDBContext _tradeLogDBContext;
        public TradeLogDataService(IHttpContextAccessor httpContextAccessor, ILogger<WebDataService> logger, ITradeLogDBContext context)
          : base(httpContextAccessor, logger)
        {
            _tradeLogDBContext = context;
        }

        public async Task<IEnumerable<DeepDiveSetting>> GetDeepDiveSettingByLogFolderID(int logFolderID)
        {
            List<DeepDiveSetting> deepDiveLists = new List<DeepDiveSetting>();
            IEnumerable<DeepDiveSetting> deepDiveSettings = await _tradeLogDBContext.GetDeepDiveSettingByLogFolderID(logFolderID);
            return deepDiveLists.ToList();
        }

        public async Task<IEnumerable<FilterFileAndRelatedFiles>> GetFilterFileAndRelatedFiles(string searchString)
        {
            List<FilterFileAndRelatedFiles> filterFileRelatedFilesList = new List<FilterFileAndRelatedFiles>();
            IEnumerable<FilterFileAndRelatedFiles> filterFileRelatedFiles = await _tradeLogDBContext.GetFilterFileAndRelatedFiles(searchString);
            return filterFileRelatedFiles.ToList();
        }
    }
}

【问题讨论】:

  • 你有FilterFileAndRelatedFiles的多个实现吗?如果您在界面中的一个和类中的一个上执行,它们会将您带到同一个类和文件吗?
  • 我重新创建了代码并编译:dotnetfiddle.net/VEpAvp(没有显示错误)。也许您遇到了错误的包引用或错误的命名空间的问题,以至于您没有真正创建具有正确类型的实现。我会尝试删除该方法并让 IDE 重新创建它(作为存根)。然后看看差异。
  • 我也做了同样的事情,recreated with fiddler,我这边没有问题。您可以尝试的另一件事是:从命令行,在您的项目或解决方案文件夹上运行一次:dotnet build 并检查是否遇到相同的错误,以防 IDE 没有意识到更改后它应该可以工作。
  • 我一定是做错了什么。我让 IDE 按照@HeroWanders 的建议为我创建方法,但仍然出现错误。我尝试了 dotnet build 失败了,因为我没有实现接口成员
  • 关闭所有文件,删除bin和obj目录,重启IDE再试一次!

标签: c# .net-core


【解决方案1】:

这个问题是一个简单/无趣的问题。提供的示例代码在 2 个不同的位置有 TradeLogDataService.cs 文件。我在其中实现接口的那个不是正在使用的那个。 解决方法是删除未使用的文件,并在正确的文件中实现接口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-19
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多