按字符串调用类c#

时间:2014-07-06 14:14:48

标签: c# string class

这个问题已经在某个时候得到了回答,但对我来说还是不够清楚。

所以问题是:classname存储在一个字符串中,这需要用来调用这样的类:

Jobs TheClass = new Jobs();

而不是乔布斯应该有字符串。 之后,此函数将获取存储在该类中的列表。

RefList = new List<string>(TheClass.ListItems);

最常见的答案是:

System.Activator.CreateInstance(Type.GetType("Jobs"));

但我仍然不知道如何在我的代码中实现它

我试过这个:

dynamic adap = System.Activator.CreateInstance(Type.GetType(StringJobs));

RefList = new List<string>(adap.listitems);

它给我一个错误:值不能为空。我认为它没有正确地将“乔布斯”视为一个班级。此外,当我将StringJobs更改为Jobs,这正是类名时,它不起作用。 对于留言发布的问题,我没有足够的声誉来发表对答案的评论,所以我不能这样问。

1 个答案:

答案 0 :(得分:1)

如果您不想了解有关该类型的任何信息,则必须使用动态。

using System;
using System.Runtime.Remoting;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            ObjectHandle handleA = Activator.CreateInstance("ConsoleApplication2", "ConsoleApplication2.A");
            dynamic instanceA = handleA.Unwrap();
            instanceA.A1 = 1;
            instanceA.b1 = "11";
            Console.WriteLine(instanceA.A1);
            Console.WriteLine(instanceA.b1);
        }
    }

    public class A
    {
        public int A1 { get; set; }
        public string b1 { get; set; }
    }

}