【发布时间】: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再试一次!