2014-07-06 70 views
0

此问题已在某个时间回答,但对于我来说还不够清楚。通过字符串c调用类#

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

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

我指导你这个副本。它展示了如何使用这个API。如果你不知道如何使用它,可以询问一个特定的问题,而不是发布一个确切的副本。 – usr

+0

谢谢,我错过了这个问题! – CularBytes

+0

“StringJobs”和“adap”的值是什么? –

回答

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; } 
    } 

} 
+0

谢谢!奇迹般有效!重复的问题没有帮助,这是。 – CularBytes