动态创造的IList的类型的新实例 [英] Dynamically creating a new instance of IList's type

查看:141
本文介绍了动态创造的IList的类型的新实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的申请正在处理IList中的。不同的用户定义类型的ILists。我想,我可以使用反射来看看IList中包含什么类型的对象,然后创建该类型的新实例,并随后添加到IList中本身?

My application is processing IList's. ILists of different user defined types. I'm thinking that i can use reflection to to see what type of object the IList contains and then create a new instance of that type and subsequently add that to the IList itself?

所以,在任何一个时间我可能会处理

So at any one time I might be processing

IList<Customer> l;

和我想创建客户的新实例

and I'd like to create a new instance of Customer

Customer c = new Customer(0, "None")

,然后添加到列表中。

and then add that onto the list

l.Add(c);

显然,在运行时动态地这样做,这是问题的症结所在。希望有人可以给我一些指点。感谢布兰登

Obviously doing this dynamically at run-time is the crux of the problem. Hope somebody can give me some pointers. Thanks brendan

推荐答案

试试这个:

    public static void AddNewElement<T>(IList<T> l, int i, string s)
    {
        T obj = (T)Activator.CreateInstance(typeof(T), new object[] { i, s });
        l.Add(obj);
    }

用法:

    IList<Customer> l = new List<Customer>();
    l.Add(new Customer(1,"Hi there ..."));

    AddNewElement(l, 0, "None");

(编辑):

试试这个话:

    public static void AddNewElement2(IList l, int i, string s)
    {
        if (l == null || l.Count == 0)
            throw new ArgumentNullException();
        object obj = Activator.CreateInstance(l[0].GetType(), new object[] { i, s });
        l.Add(obj);
    }

这篇关于动态创造的IList的类型的新实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆