0

を返すオブジェクトを持つAPIを使用しているIEnumerable<T>ので、のようなものです Object.GetEnum<T>

GetEnumを呼び出すメソッドがありますが、メソッドのパラメーターにパラメータータイプを渡す機能を追加したいと思います。たとえば、私は次のことを行います。

private void myMethod(apiClass???  apiclass)  
{
IEnumerable< itemType > enumX = ObjectGetEnum< itemType >
}
private void Main()
{
    myMethod(apiClass1);
    myMethod(apiClass2);
}

したがって、上記のように、myMethodのパラメーターの種類や、列挙子を取得するコードの記述方法がわかりません。apiClass1とapiClass2が継承するクラスである「apiClass」を渡してみました。しかし、それから何をすべきかについてそこで立ち往生しました…そして私はそれがとにかく本当にうまくいくとは思いません。

したがって、C#でこれを行う方法がわからないのか、それとも可能かどうかはわかりません…。または、APIに何かが欠けている(またはAPIにこれを容易にするための何かが欠けている)可能性があります。

ありがとうFKC

4

3 に答える 3

5

わかりました、質問を明確にしたいと思いますが、これを突き刺します。メソッドをジェネリックにするだけでよいと思います。

private void MyMethod<TItem>() where TItem : ApiClass
{
    IEnumerable<TItem> enumX = ObjectGetEnum<TItem>();
}

private static void Main()
{
    MyMethod<ApiClass1>();
    MyMethod<ApiClass2>();
}
于 2009-02-20T17:49:58.533 に答える
0

メソッド内の閉じた構築型の型パラメーターにアクセスしようとしていますか? たぶん、このようなものがうまくいくでしょう:

using System;

class Foo<T> { }

class Program
{
    static void Main()
    {
        myMethod(new Foo<String>());
    }

    private static void myMethod<T>(Foo<T> foo)
    {
        // use the T parameter in here
    }
}
于 2009-02-20T17:54:08.133 に答える
0

次のようなものが必要です。

private void myMethod<T>()
{
    IEnumerable<T> enumX = ObjectGetEnum<T>();
}
于 2009-02-20T17:54:46.743 に答える