asp.net web api c# interface dataprovider

Posted

技术标签:

【中文标题】asp.net web api c# interface dataprovider【英文标题】: 【发布时间】:2019-11-30 10:58:22 【问题描述】:

请查看代码,只是我在将接口调用到 dataprovider 时发现以下错误

错误行::: public class UserDataProvider : IUserDataProvider

错误文本::: 'UserDataProvider' 没有实现接口成员'IUserDataProvider.gettabs()'

我会感谢你的

c# 中的 Web API 代码

接口代码:

using System.Collections.Generic;
using System.Threading.Tasks;
using WebAPIceoTransaction.Models;

namespace WebAPIceoTransaction.DataProvider

public interface IUserDataProvider

   Task<IEnumerable<TabMain>> Gettabs();

    Task<TabMain> Gettab(int fid);

    Task Addtab(TabMain Tab);

    Task Updatetab(TabMain Tab);

    Task DeleteTab(int fid);


数据提供者代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Dapper;
using Microsoft.EntityFrameworkCore;
using System.Data;
using System.Data.SqlClient;
using WebAPIceoTransaction.Models;
namespace WebAPIceoTransaction.DataProvider


public class UserDataProvider : IUserDataProvider

    private readonly string connectionString = "Server=******;Database=****;Trusted_Connection=True;";

    private SqlConnection sqlConnection;

    public async Task AddTab(TabMain tabmain)
    
        using (var sqlConnection = new SqlConnection(connectionString))
        
            await sqlConnection.OpenAsync();
            var dynamicParameters = new DynamicParameters();
            dynamicParameters.Add("@FName", tabmain.FName);
            dynamicParameters.Add("@FCompany", tabmain.FCompany);
            dynamicParameters.Add("@FDate", tabmain.FDate);
            dynamicParameters.Add("@FAmount", tabmain.FAmount);

            dynamicParameters.Add("@FPaid", tabmain.FPaid);
            dynamicParameters.Add("@FTransferType", tabmain.FTransferType);
            dynamicParameters.Add("@FChequeNo", tabmain.FChequeNo);
            dynamicParameters.Add("@FBank", tabmain.FBank);
            dynamicParameters.Add("@FAccountNo", tabmain.FAccountNo);
            dynamicParameters.Add("@Purpose", tabmain.Purpose);


            await sqlConnection.ExecuteAsync(
                "spAddTab",
                dynamicParameters,
                commandType: CommandType.StoredProcedure);
        
    

    public async Task DeleteTab(int fid)
    
        using (var sqlConnection = new SqlConnection(connectionString))
        
            await sqlConnection.OpenAsync();
            var dynamicParameters = new DynamicParameters();
            dynamicParameters.Add("@Fid", fid);
            await sqlConnection.ExecuteAsync(
                "spDeleteUser",
                dynamicParameters,
                commandType: CommandType.StoredProcedure);
        
    

    public async Task<TabMain> GetTab(int fid)
    
        using (var sqlConnection = new SqlConnection(connectionString))
        
            await sqlConnection.OpenAsync();
            var dynamicParameters = new DynamicParameters();
            dynamicParameters.Add("@fid", fid);
            return await sqlConnection.QuerySingleOrDefaultAsync<TabMain>(
                "spGetTab",
                dynamicParameters,
                commandType: CommandType.StoredProcedure);
        
    

    public async Task<IEnumerable<TabMain>> GetTabs()
    
        using (var sqlConnection = new SqlConnection(connectionString))
        
            await sqlConnection.OpenAsync();
            return await sqlConnection.QueryAsync<TabMain>(
                "spGetTabs",
                null,
                commandType: CommandType.StoredProcedure);
        
    

    public async Task UpdateTab(TabMain tabmain)
    
        using (var sqlConnection = new SqlConnection(connectionString))
        
            await sqlConnection.OpenAsync();
            var dynamicParameters = new DynamicParameters();
            dynamicParameters.Add("@FName", tabmain.FName);
            dynamicParameters.Add("@FCompany", tabmain.FCompany);
            dynamicParameters.Add("@FDate", tabmain.FDate);
            dynamicParameters.Add("@FAmount", tabmain.FAmount);

            dynamicParameters.Add("@FPaid", tabmain.FPaid);
            dynamicParameters.Add("@FTransferType", tabmain.FTransferType);
            dynamicParameters.Add("@FChequeNo", tabmain.FChequeNo);
            dynamicParameters.Add("@FBank", tabmain.FBank);
            dynamicParameters.Add("@FAccountNo", tabmain.FAccountNo);
            dynamicParameters.Add("@Purpose", tabmain.Purpose);
            await sqlConnection.ExecuteAsync(
                "spUpdateTab",
                dynamicParameters,
                commandType: CommandType.StoredProcedure);
        
    


【问题讨论】:

正如错误所述,您的类没有实现方法Gettabs()。它确实实现了GetTabs() 方法,但由于C# 区分大小写,所以这不是同一种方法。 (还值得注意的是,在您的“错误消息”中,您引用了 gettabs(),这与 both 不同。外壳很重要。) 谢谢大卫,错误已解决。 【参考方案1】:

在您的界面中,您将其定义为

Task<IEnumerable<TabMain>> Gettabs();

但你是这样实现的

 public async Task<IEnumerable<TabMain>> GetTabs()

C# 是区分大小写的语言,因此您需要更改实现方法名称或接口方法名称。我会将接口方法名称更改为 GetTabs 以符合标准命名约定

【讨论】:

以上是关于asp.net web api c# interface dataprovider的主要内容,如果未能解决你的问题,请参考以下文章

不可接受的响应 (406) 消息 Asp.NET 代码 Web API (C#) - .NET 5.0

ASP.NET Web API 代码使用哪种模式 - C#

使用 c# --> asp.net web api 在 json 中获取分层输出

ASP.NET Web API系列教程目录

如何使用 MongoDB 将动态 JSON 属性发布到 C# ASP.Net Core Web API?

如何在 Asp.NET Core WEB API 中使用 .Net (C#) 在 Payload 中创建具有自定义 JSON 声明的 JWT 令牌