小编mrt*_*mrt的帖子

.NET 3.5安装程序中是否包含.NET 2.0?

我有一个用Nemerle编写的.NET 3.5程序.作为项目依赖项,我有一个.NET 2.0库.我可以确定当最终用户安装.NET 3.5时我的程序会工作,还是我还需要强迫他安装.NET 2.0?

谢谢.

.net installer nemerle

5
推荐指数
1
解决办法
2195
查看次数

DDD和持久性.再次

我在Domain Driven Design中坚持不懈.据我所知,域模型永远不应该是持久感知的.假设我正在构建一个简单的待办事项列表应用程序.我有一个以下界面的任务:

interface ITask
{
   bool IsCompleted {get;}
   string Description {get;}

   void Complete();
   void ChangeDescription(string description);
}
Run Code Online (Sandbox Code Playgroud)

通用实现应该如下所示:

class SimpleTask : ITask
{
    public SimpleTask(string description)
    {
       ChangeDescription(description);
    }

    public bool IsCompleted { get; private set; }
    public string Description { get; private set; }

    public void Complete()
    {
       IsCompleted = true;
    }

    public void ChangeDescription(string description)
    {
       // some validation here
       // ...
       Description = description;
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望描述是必要的 - 因为这是一个商业规则.所以从这一刻起,如果我想通过序列化器保存这个对象,我将失败,因为没有提供无参数构造函数.我不应该提供它,因为没有持久性意识的规则.如果我以DTO\POCO的形式模拟我的任务,我将最终遇到另一个问题 - 所谓的贫血模型.而且,我不想为某些属性提供setter.

那么所有这些的解决方案在哪里?我可以创建一个紧密耦合的保护程序,它将知道如何保存和恢复任务状态.但我只能访问公共属性和方法,如果任务的内部逻辑复杂且无法保存\还原会怎么样?我应该在任务内部标记所有字段并且有可能保存对象的内部状态吗?是不是有点代码味道和违反没有持久性意识的规则?

你是如何解决这个问题的?

.net c# persistence domain-driven-design

4
推荐指数
1
解决办法
1220
查看次数