c#中的多态返回类型

Edg*_*tat 2 c#

我有一个目前原型为:

List<object> get_object_list(byte object_type, object_void_delegate get_one_specific_type_object)
{}
Run Code Online (Sandbox Code Playgroud)

由于获取元素列表的逻辑对于我所拥有的所有类型都是相同的,但是获取一个元素的逻辑从一种类型到另一种类型是不同的,我希望有一个函数来获取所有类型的列表(get_object_list) ()).

例如,Car我会打电话给:

List<Car> cars_list = (List<Car>) get_object_list (CAR , get_one_car);
Run Code Online (Sandbox Code Playgroud)

现在的问题是我有无效转换的c编译错误:无法转换List<object>List<Car>

无论如何要解决它吗?

更新: 一些澄清.get_object_list()位于客户端组件中,它从网络资源(aNetStream)获取数据. object_type正被发送到服务器,让它知道所需的列表类型.服务器将回复Uint32 number_of_items描述可用元素的数量.然后,get_one_specific_type_object()将被称为number_of_items时代.

Jon*_*eet 5

听起来你可能想要使方法通用:

List<T> GetObjectList<T>(byte objectType, Func<T> singleObjectGetter)
Run Code Online (Sandbox Code Playgroud)

你把它称为:

List<Car> cars = GetObjectList<Car>(CAR, GetOneCar);
Run Code Online (Sandbox Code Playgroud)

事实上你可能会发现类型推断允许你只写:

List<Car> cars = GetObjectList(CAR, GetOneCar);
Run Code Online (Sandbox Code Playgroud)

你可能想要类似Func<int, T>或类似的东西- 我们无法真正说出来.说实话,还不清楚第一个参数是什么意思.如果您需要更多详细信息,则应提供更多上下文.

作为旁注,我强烈建议您接受C#/ .NET命名约定.