优雅的方式来初始化和存储许多对象

时间:2018-05-07 06:36:23

标签: c# serialization organization code-organization

Morning StackOverflow社区,

关于这个问题我已经咬了几天,现在也许有人有个主意。

我有一个包含Task对象的BaseClass(“TaskBase”)。随着应用程序的增长,会有很多这些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对象最终会在List中,并通过WCF传递并在客户端执行。

现在我觉得我在Code中预定义了它们可以正常工作

        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;

但是我真的不喜欢在一个课程中看到数百个这些定义的事实,我想以某种方式组织它们但我无法弄清楚如何......

也许部分类可以做到这一点?(不应该减慢应用程序的速度,因为它只是编译成一个文件吗?)

也许是某种经理类我在哪里注册我的任务?

也许有办法序列化一个我不知道的任务?

0 个答案:

没有答案