首页 > 解决方案 > C#,为什么我不能从接口访问继承类中的类(通用参数)成员

问题描述

任何人都可以帮助我吗?

我创建了一个接口,使用一个类作为参数,因为我需要在SQL数据库中保存不同的表,所以我想创建一个方法来将数据保存到SQL数据库中。

public interface IDataAdapter {        
    void SaveExistingData<T>(T t);
    }

我创建了另外 4 个类,如 BrandAdapter 类、ProuductionAdapter 类、SupplyAdapter 类和 OrderAdapter 类,这 4 个类都继承自接口 IDataAdapter。

public class BrandAdapter : IDataAdapter {       
 public void SaveExistingData<Brand>(Brand updatedBrand) {
        string sql = "UPDATE tblBrands SET " + "brandName=@brandName " +
                     $"WHERE brandID={updatedBrand.brandId}"; //ERROR is at updatedBrand.brandId
        using (var connection = Helper.CreateDatabaseConnection()) {
            connection.Execute(sql, updatedBrand);
        }
    }

}

现在访问updatedBrand.brandId,IDE提示出错,无法访问Brand类中的所有成员,而且“Brand”是深黄色,按F12无法访问其定义,看起来像系统没认出来。

如果你只创建一个品牌,没关系,我可以使用品牌类的所有成员,但是当我使用泛型时,就不行了。因为我想用另一个类作为参数,所以我尝试使用泛型。

提前致谢。

标签: c#

解决方案


这个怎么样 ?

public class Brand
{
    public int brandId { get; set; }
}

public interface IDataAdapter<T>
{
    void SaveExistingData(T t);
}

public class BrandAdapter : IDataAdapter<Brand>
{
    public void SaveExistingData(Brand updatedBrand) 
    {
        int abcd = updatedBrand.brandId;
    }
}

推荐阅读