将<t>传递给调用GetEnum <t>的方法</t> </t>

时间:2009-02-20 17:44:13

标签: c# ienumerable

我正在使用一个包含返回IEnumerable<T>的对象的API,所以类似于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

3 个答案:

答案 0 :(得分:5)

好的,我打算对此进行一次尝试,虽然我想要澄清这个问题。我怀疑你只需要使方法通用:

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

private static void Main()
{
    MyMethod<ApiClass1>();
    MyMethod<ApiClass2>();
}

答案 1 :(得分:0)

您是否尝试在方法中访问闭合构造类型的type参数?也许这样的事情会起作用:

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
    }
}

答案 2 :(得分:0)

你需要这样的东西:

private void myMethod<T>()
{
    IEnumerable<T> enumX = ObjectGetEnum<T>();
}