【发布时间】:2017-04-27 11:07:58
【问题描述】:
使用这种方法将新项目添加到自定义集合中很好吗?不是添加现有元素,而是在集合中创建新元素?方法名称“Add”是否适合这种情况? (目的是隐藏存储库。)谢谢。
public class MyObject
{
public int ID { get; }
public Value1 { get; }
public Value2 { get; }
}
public interface ICustomCollection : IEnumerable<MyObject>
{
MyObject Add(value1, value2);
}
public class CustomCollection : ICustomCollection
{
MyObjectFactory factory;
MyObjectRepository repository;
public IEnumerator<MyObject> GetEnumerator()
{
return repository.GetAllObjects();
}
public MyObject Add(value1, value2)
{
var newItem = factory.Create(value1, value2);
repository.AddObject(newItem);
return newItem;
}
//...
}
【问题讨论】:
-
我想你需要问问你自己,我需要定制收藏吗?答案几乎总是否定的。您似乎正在使用此集合向数据库添加项目?
-
“答案几乎总是否定的。” -- 您是否有书面证据支持该声明?
-
“书面证据”就像来自权威机构的博客来源?你要找什么证据?如果你不同意让我们讨论。这就是专业人士和新手分享他们见解的讨论......
-
我没有看到任何使用这种方法的问题。例如,
DataRowCollection有 similar method。 -
@Botonomous 是的,它是旨在隐藏 DAL 级别的 DDD 层抽象之一
标签: c# oop design-patterns domain-driven-design ienumerable