我正在使用一个包含返回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
答案 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>();
}