现在我有这样一个需求 有一个方法参数 List<T> 这个参数的个数是不定的 形如:
1 public static void InsertData<T>(params ImportOracleParameter<T> parameter)
这个 ImportOracleParameter 是这样定义的
1 public class ImportOracleParameter<T> 2 { 3 private Dictionary<string, List<T>> listColumn; 4 5 public Dictionary<string, List<T>> ListColumn 6 { 7 get { return listColumn; } 8 set { listColumn = value; } 9 } 10 }
如果是这样 那么当我执行这个方法的时候 如果给T确定类型: InsertData<string>
那么我接下来的 ImportOracleParameter 参数T就被固定死了 如何解决呢?
我想要的结果就是:我可以传多个 ImportOracleParameter 参数 且每个参数的具体类型T不同
用 动态类型试试
public static void InsertData(params ImportOracleParameter<dynamic>[] parameter) { } var p1 = new ImportOracleParameter<dynamic> { ListColumn = new Dictionary<string, List<dynamic>> { { "1", new List<dynamic> { "1" } } } }; var p2 = ......... InsertData(p1, p2);
我已经找到解决方案了 我定义泛型 但又想在一次调用中传不同的类型参数 这样本身是无法完成的 因为泛型在调用时定义了具体类型参数后 就已经确定了类型参数 无法再拆分为多个 不过还是谢谢各位的解答
貌似可以用逆变或者协变啊,楼主可以参考这个: http://www.cnblogs.com/lemontea/archive/2013/02/17/2915065.html,希望对你有帮助。
同时也谢谢你!
173844862 .Net 高级交流部落