我有一个如下界面:
public interface ISelectEntity
{
List<T> GetFromDB<T, O>(O data);
}
我在StatusCodes类
中实现如下List<StatusCodes> ISelectEntity.GetFromDB<StatusCodes, StatusCodesInputParameters>(StatusCodesInputParameters data)
{
return EntitiesClass.PopulateStatusCodes(EntitiesDAL.GetStatusCodes(data));
}
但是我收到以下错误:
错误2参数'1':无法从'StatusCodesInputParameters'转换为'Namespace.StatusCodesInputParameters'
假设我的命名空间名为Namespace,那就是我收到的错误。所有这些都在这一个命名空间内。我究竟做错了什么?
答案 0 :(得分:1)
您无法更改派生类中的方法签名。您可以在接口上定义泛型参数,而不是在方法上执行:
public interface ISelectEntity<T, O>
{
List<T> GetFromDB(O data);
}
示例显式实现可能如下所示:
public class Foo : ISelectEntity<StatusCodes, StatusCodesInputParameters>
{
List<StatusCodes> ISelectEntity<StatusCodes, StatusCodesInputParameters>.GetFromDB(StatusCodesInputParameters data)
{
return EntitiesClass.PopulateStatusCodes(EntitiesDAL.GetStatusCodes(data));
}
}
和示例隐式实现:
public class Foo : ISelectEntity<StatusCodes, StatusCodesInputParameters>
{
public List<StatusCodes> GetFromDB(StatusCodesInputParameters data)
{
return EntitiesClass.PopulateStatusCodes(EntitiesDAL.GetStatusCodes(data));
}
}