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中的参数类型应该是什么,也不知道如何编写获取枚举器的代码。我尝试传递“apiClass”,即 apiClass1 和 apiClass2 继承自的类。但是后来被困在那里做什么......而且我认为无论如何这都行不通。

所以我不确定我是否只是不知道如何在 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 回答