2

現在、次のようにプロトタイプ化されている関数があります。

List<object> get_object_list(byte object_type, object_void_delegate get_one_specific_type_object)
{}

要素のリストを取得するロジックは、私が持っているすべてのタイプで同じですが、1 つの要素を取得するロジックはタイプごとに異なるため、すべての種類のリストを取得するための 1 つの関数 ( get_object_list () )。

たとえば、Car私が呼び出すタイプの場合:

List<Car> cars_list = (List<Car>) get_object_list (CAR , get_one_car);

問題は、無効な変換の C コンパイル エラーが発生していることです: に変換できませList<object>List<Car>

とにかくそれを修正することはありますか?

更新: いくつかの説明。get_object_list() はクライアント コンポーネントにあり、ネットワーク リソース (aNetStream) からデータを取得します。 object_typeサーバーに送信され、目的のリストの種類がサーバーに通知されます。Uint32 number_of_itemsサーバーは、使用可能な要素の数を説明して応答しその後、get_one_specific_type_object()と呼ばれnumber_of_itemsます。

4

3 に答える 3

1

あなたの機能を実装するためのより良い方法があるはずだと思いますが、これはコードをそのまま機能させるためのトリックを行うはずです.

List<Car> cars_list =  get_object_list (CAR , get_one_car)
        .Cast<Car>()
        .ToList()
于 2013-08-22T13:46:25.230 に答える
0

この目的のためにIEnumerable.Castメソッドを使用することを考えるかもしれません。

簡単な例は次のようになります。

    var objectArray = new object[]{1,2,3,4,5,8};
    var intList = objectArray .Cast<int>()
于 2013-08-22T13:42:43.677 に答える