C# 动态创建类的实例,每次都可以不同,并且仍然能够访问它';s属性

C# 动态创建类的实例,每次都可以不同,并且仍然能够访问它';s属性,c#,windows-services,dynamics-crm-4,C#,Windows Services,Dynamics Crm 4,我正在努力实现以下目标: 例如,我有3个自定义类,分别命名为class、test和unknown,如下所示: public class class { public string name { get; set; } public Guid ID { get; set; } public int interval { get; set; } } public class test { public string name { get; set; } public Guid

我正在努力实现以下目标:

例如,我有3个自定义类,分别命名为
class
test
unknown
,如下所示:

public class class
{
  public string name { get; set; }
  public Guid ID { get; set; }
  public int interval { get; set; }
}

public class test
{
  public string name { get; set; }
  public Guid ID { get; set; }
  public int interval { get; set; }
}

public class unknown
{
  public string name { get; set; }
  public Guid ID { get; set; }
  public int interval { get; set; }
}
现在,在我的程序中,我读取了一个XML文件,其中包含一行代码,其中包含它必须创建的类的名称

<Messages>
  <Message Name='ClassMessage' Type='class' />
  <Message Name='TestMessage' Type='test' />
  <Message Name='UnknownMessage' Type='unknown' />
</Messages>

我将循环遍历XML中的每一行,并根据XML中给定的类型创建该类的实例。我知道您可以使用Activator.CreateInstance()实现这一点,唯一的问题是,我将无法访问它的属性(名称、ID、间隔)

在上面的示例中,它只有3个类,尽管我正在研究一些与Microsoft Dynamics CRM 4.0的Web服务相抵触的东西,并且有更多的类可以选择

object foo = Activator.CreateInstance("test");
(foo as test).name = "TestMessage";

更新:这是你真正想做的

所有的课程都有相同的成员吗?为什么不给他们一个共同的祖先呢?@Steve:不,他们没有。我只是在示例中尽可能简单地创建了这些类,尽管CRM 4.0的类对于不同的成员来说完全不同。我想你肯定可以使用反射来实现这一点,但这不是我经常使用的东西。看看哪个有关于这个主题的信息。@Steve谢谢。我将对此进行研究。似乎命名一个类“class”本身会导致问题。如果我知道它是什么类,这将起作用,尽管在使用Activator创建实例时,我只有该类的字符串名称。因此,做(foo-as-test)是不可能的,因为在那一点上,我还不知道它是类测试。我试图从你那里得到这些信息。您没有给出激活将在何处发生的上下文。:-)这正是我需要的!非常感谢!