如何列出实现抽象类和接口(C#)的东西?

Oop*_*ser 4 c# generics

假设我有Tanks,Airplanes和许多其他东西的列表,它们实现的常见的东西是IHaveLocation,它是抽象类,IHaveColor是一个接口.

我想列出它们,因为我需要在这两个接口的基础上查询列表.

我该怎么做 ?

  • 我可以创建一个对象列表,然后编写(obj作为IHaveLocation)并使用他的方法,并使用(obj作为IHaveColor)并使用他的方法.但这非常难看!
  • 我可以列出IhaveLocation,然后我只需要做一个(obj作为IHaveColor).但它也很可怕
  • 我可以创建一个新的抽象类,然后从两者继承,但我试图避免它.

这有什么诀窍吗?

我想做点什么 List<IHaveLocation and IHaveColor>

Ree*_*sey 8

您可以将此包装在具有两种类型约束的泛型类中:

public class YourClass<T> where T : IHaveLocation, IHaveColor
{
    List<T> items = new List<T>;

    public void Add(T item)
    {
        items.Add(item);
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

然后,此类中的方法可以根据需要使用这两个接口,因为类型可以保证实现它们.