我有一个Reflection方法,我加载一个具有特定名称的类的实例。我有一个抽象类来定义我的类。现在我在这个抽象类的构造函数中也有一个接口。这有点难以解释,我不确定它是否是解决问题的正确方法。但这是我的源代码,应该解释最多:
程序:
private static void Main(string[] args)
{
int result;
if (args.Length > 0)
{
string jobName = args[0];
Type[] types = Assembly.GetAssembly(typeof(Task)).GetTypes();
foreach (Type type in types)
{
if (type.Name == jobName)
{
//Here is my problem. I need my Interface instead of null
_job = (Task)Activator.CreateInstance(type, null);
}
}
if (_job != null)
{
result = _job.Run(args);
}
}
//Dispose the Job
_job = null;
}
任务:
public abstract class Task
{
public IArgument Argument;
protected Task(IArgument argument)
{
Argument = argument;
}
public int Run(string[] args)
{
int result;
if (SetArguments(args))
{
result = Work();
}
return result;
}
protected abstract int Work();
接口:
public interface IArgument
{
bool SetArguments(string[] args);
}
现在我可以创建一个"任务"上课和#34;论证"类:
public class ImportArgument : IArgument
{
public bool SetArguments(string[] args)
{
return true;
}
}
public class ImportTask : Task
{
protected override int Work()
{
return 1;
}
public ImportTask(IArgument argument) : base(argument)
{
Argument = new ArticleImportArgument();
}
}
你们怎么想?有没有办法在构造函数中使用Interface创建任务类的实例?有没有其他方法可以解决这个问题?我还可以在我的Task类中创建一个抽象方法,我必须实现我的接口,但我认为构造函数是更好的方法。