2012-01-18 70 views
0

我想从列表中生成一个DataTables。Howto someFunction(List <acceptDifferentTypesHere> list){/ * reflection stuff * /}

so f.e.我有两个列表

List<typeA> listA = new List<typeA>(); 
List<typeB> listB = new List<typeB>(); 

我怎样才能得到一个函数接受两个(或超过这些)列表与不同的元素类型?

private void someFunction(List<acceptDifferentTypesHere> list) 
{ 
    /*elementwise reflection stuff*/ 
} 

任何帮助将是不错,

哈利

+0

你知道在编译时的typeA或TYPEB? – 2012-01-18 15:16:03

+0

是的,我知道他们两人。 – Harry 2012-01-18 15:22:00

+0

所以msarchet你答案! – 2012-01-18 15:34:42

回答

6
private void someFunction<T>(List<T> list) 
{ 
    /*elementwise reflection stuff*/ 
} 

使用如下

someFunction<typeA>(listA); 
someFunction<typeB>(listB); 
+0

它大声说:“扩展方法必须在非泛型静态类中定义” – Harry 2012-01-18 15:26:14

+1

您没有使用扩展方法,或者您没有显示导致错误的代码 – msarchet 2012-01-18 15:28:12

+0

Nevermind,现在工作正常。谢谢! – Harry 2012-01-18 15:36:56

1

在你想与你的不同类型(接入方式做多的情况下,属性)。

private void someFunction<T>(List<T> list) where T : MyType, new() 
    { 
     /*elementwise reflection stuff*/ 

     var instance = new T(); 
     Type type = instance.GetType(); 
     instance.MyMethod();  
    } 

    public class MyType 
    {   
     public void MyMethod() 
     { 

     } 
    } 

你可以进一步扩展这个..(例如运用MyType为的typeA和TYPEB的推广..等)