使用界面但保留具体值

Ash*_*old 0 c# interface

我试图创建一个与接口列表一起工作的函数,但我想保留这些列表的具体类值.例如:

public interface GUID_OBJECT
{
    string GUID { get; set; }
}

public class Car : GUID_OBJECT
{
    public string GUID { get; set; }
    public string CarSpecifikProp { get; set; }
}

public class Bike : GUID_OBJECT
{
    public string GUID { get; set; }
    public string BikeSpecifikProp { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
class Program
{
    static void Main(string[] args)
    {
        var cars = new List<Car>() { new Car() { GUID = "1", CarSpecifikProp = "carstuff" }, new Car() { GUID = "2", CarSpecifikProp = "carsuff" } };
        var bikes = new List<Bike>() { new Bike() { GUID = "1", BikeSpecifikProp = "bikestuff" }, new Bike() { GUID = "2", BikeSpecifikProp = "bikestuff" } };

        var filteredCars = FilterGuidObjects(cars);

        foreach (var car in filteredCars)
        {
            car.CarSpecifikProp = "changethis";
        }

        var filteredBikes = FilterGuidObjects(bikes);

        foreach (var bike in filteredBikes)
        {
            bike.BikeSpecifikProp = "changethis";
        }

        Console.ReadKey();
    }

    static List<GUID_OBJECT> FilterGuidObjects(List<GUID_OBJECT> objects)
    {
        return objects.Where(x => x.GUID == "1").ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码不起作用,但它说明了我想做的事情.我有一个web api项目,它返回各种类型的对象列表,但所有这些对象都有一些共同点GUID,例如.我可以写与工作界面功能GUID_OBJECT,但保留CarBike具体性质函数返回它的名单之后GUID_OBJECT接口?你会如何处理这样的情景?

ASh*_*ASh 5

使用约束创建泛型方法:

static List<G> FilterGuidObjects<G>(List<G> objects) where G: GUID_OBJECT
{
    return objects.Where(x => x.GUID == "1").ToList();
}
Run Code Online (Sandbox Code Playgroud)