我有一个隐含抽象类的基本程序。
public abstract class AbstractClass
{
public AbstractClass (MyObject object1, MyOtherObject object2)
{
Console.WriteLine("This is the abstract class");
}
public abstract bool Function1();
<other abstract functions>
}
现在,当我想做不同的事情并为这些事情实现不同的抽象类时,我会构建和编译我的应用程序的单独版本。我觉得这很乏味。
我希望能够采用这行代码
new MySuperSpecialClassOfThings(param1, (MyObject obj1, MyOtherObject obj2) =>
{
return new NotAnAbstractClass(obj1, obj2);
}, true);
并将其更改为:
new MySuperSpecialClassOfThings(param1, (MyObject obj1, MyOtherObject obj2) =>
{
return new System.Activator.CreateInstance(Type.GetType(config.NonAbstractClassName), new object[] { obj1, obj2 });
}, true);
whereconfig.NonAbstractClassName
是配置文件中提供的字符串。但是,这失败了,并出现错误:
'System.Activator.CreateInstance(System.ActivationContext, string[])' is a 'method' but is used like a 'type'
obj1
并且obj2
不是字符串。他们是班级。
我怎样才能做到这一点?