gpt4 book ai didi

c# - 关于 C# 中自定义集合的问题

转载 作者:太空狗 更新时间:2023-10-29 23:56:21 25 4
gpt4 key购买 nike

我想知道从自定义集合类返回对象时最好的模式是什么。为了说明我的问题,这里有一个例子:

我有一个客户类:

public class Customer
{
//properties
//methods
}

然后我有一个客户收集类:

public class Customercollection: Collection<Customer>
{

public Collection<Customer> FindCustomers()
{
//calls DAL and gets a Collection of customers
Collection<Customer> customers = DAL.GetCustomers();

return customers;
}
}

现在,此方法的替代版本可以是:

public class Customercollection: Collection<Customer>
{

public Collection<Customer> FindCustomers()
{
//calls DAL and gets a Collection of customers
Collection<Customer> customers = DAL.GetCustomers();
foreach(Customer c in customers)
this.Add(c);
return this;
}
}

我想讨论哪种方法更好?还有比上面两个更好的其他方法吗?

最佳答案

我建议第三种方法:

编辑: 我已经更新了这个代码示例以反射(reflect)下面 OP 的评论。

public class Customer
{
public static ICollection<Customer> FindCustomers()
{
Collection<Customer> customers = new Collection<Customer>();

foreach (CustomerDTO dto in DAL.GetCustomers())
customers.Add(new Customer(dto)); // Do what you need to to create the customer

return customers;
}
}

大多数时候不需要自定义集合 - 我假设这是其中一种情况。您还可以将实用程序方法添加到类型(在本例中为 Customer 类型),因为这有助于开发人员发现这些方法。 (这一点更像是一个品味问题 - 因为这是一个静态方法,所以您可以随意将其放入任何类型,例如 CustomerUtilityCustomerHelper)。

我最后的建议是从 FindCustomers() 返回一个接口(interface)类型为您在未来的实现变更方面提供更大的灵 active 。显然DAL.GetCustomers()必须返回某种实现了 IList<T> 的类型同样,但是任何 API 方法(尤其是在数据层等不同层中)也应该返回接口(interface)类型。

关于c# - 关于 C# 中自定义集合的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1222313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com