Сообщество Morning StackOverflow,
Я уже несколько дней грызу ногти об этой проблеме, может быть, у кого-то есть идея.
У меня есть BaseClass ("TaskBase"), содержащий объект Task, который что-то делает. По мере роста приложения будет много этих классов TaskBase. Я не могу сериализовать это, потому что есть вовлеченные Задачи (по крайней мере, я думаю, что это не реально возможно).
public class TaskBase
{
public TaskImpactLevel ImpactLevel { get; set; }
public RequiredOnlineStatus RequiredOnlineStatus { get; set; }
public TaskType Type { get; set; }
public TaskTarget Target { get; set; }
private Task _task;
public Task Task
{
get
{
if (_task == null)
_task = new Task(() => Execute());
return _task;
}
set
{
_task = value;
}
}
public string Name { get; set; }
public string Description { get; set; }
public ParameterCollection Parameters { get; set; }
public TaskBase()
{
Name = "Default Name - please change it in the subclass";
Description = "Default desciption - please change it in the subclass";
Parameters = new ParameterCollection();
}
public virtual void Execute()
{
throw new NotImplementedException();
}
}
Объекты TaskBase в конечном итоге окажутся в списке, будут переданы через WCF и выполнены на стороне клиента.
Теперь я подумал, что я предопределил их в коде, который прекрасно работает
TaskBase t = new TaskBase();
t.Name = "Dummy Task";
t.ImpactLevel = TaskImpactLevel.High;
t.Parameters.Add(new TaskParameterViewModel() { DisplayName = "Username", Key = "User", Value = new UserModel() });
t.Target = TaskTarget.None;
t.Task = new Task(() => { Console.WriteLine("Hello"); });
t.Type = TaskType.Executable;
Однако мне не очень нравится тот факт, что мне приходится смотреть на сотни из них, определенных в одном классе, я хотел бы как-то их организовать, но я не могу понять, как ...
Может быть, частичные классы сработают? (Не должно замедлять работу приложения, потому что оно просто скомпилировано в один файл, верно?)
Может быть, какой-то класс менеджера, где я регистрирую свои Задачи?
Может быть, есть способ сериализации Задачи, о которой я просто не знаю?