【发布时间】:2016-03-08 19:13:11
【问题描述】:
我想使用泛型实现接口中的方法。但我收到错误。 例如 //Filter在这里是一个类。
public interface IComponent<T>
{
List<T> GetOrderSummary(Filter input);
T GetOrderDetails(string orderId);
List<T> GetOrderSummaryDetails(Filter input);
}
// ORDER A AND ORDER B ARE TWO MODEL CLASSES HERE
public class OrderDetails : IComponent<OrderA>,IComponent<OrderB>
{
public List<OrderA> GetOrderSummary(Filter input)
{
//Some logic
//lst of type OrderA
return lst;
}
public List<OrderB> GetOrderSummaryDetails(Filter input)
{
//Some logic
//lst of type OrderB
return lst
}
public OrderA GetOrderDetails(string orderId)
{
throw new NotImplementedException();
}
}
我在构建时遇到错误
OrderDetails 没有实现接口成员 IComponent.GetOrderSummaryDetails(Filter).OrderDetails.GetOrderSummaryDetails 无法实现 IComponent.GetOrderSummaryDetails(Filter) 因为它没有匹配的返回类型
List<OrderA>OrderDetails 没有实现接口成员 IComponent.GetOrderSummary(Filter).OrderDetails.GetOrderSummary 无法实现 IComponent.GetOrderSummary(Filter) 因为它没有匹配的返回类型
List<OrderB>OrderDetails 没有实现接口成员 IComponent.GetOrderDetails(string).OrderDetails.GetOrderDetails(string) 无法实现 IComponent.GetOrderDetails(string) 因为它没有匹配的返回类型 OrderB
请告诉我如何解决这些问题。
【问题讨论】:
-
您是否尝试过使用显式接口实现? afaik 方法的区别仅在于它们的名称和输入参数,而不是它们的返回值。
-
OrderDetails类是否只包含 3 个方法?请注意,您不能隐式实现这两个接口,因为这样您将拥有两个具有相同参数但返回值类型不同的方法,这在 c# 中是非法的。你可以明确地实现它们。