我有一个目前原型为:
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时代.
听起来你可能想要使方法通用:
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命名约定.
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |