gpt4 book ai didi

c# - 构造函数中有很多参数的最佳实践?

转载 作者:太空狗 更新时间:2023-10-29 23:53:43 36 4
gpt4 key购买 nike

如果我有一个 View 需要访问 5 个不同的存储库,我现在正在这样做:

public class MyClass
{
private readonly IRepo1 rep1;
private readonly IRepo2 rep2;
...
public MyClass(IRepo1 r1, IRepo2 r2, IRepo3 r3, IRepo4 r4...)
{
rep1 = r1;
rep2 = r2;
re3 = r3;
}
}

这种方法的问题是构造函数变得越来越大,如果构造函数发生变化,我必须在整个系统中编辑更改。如何避免这个问题?

我考虑过创建一个构建器类,它负责创建存储库并将它们解析为 View 。或者这是一个不好的方法?

最佳答案

您可以使所有存储库接口(interface)都派生自一个基本接口(interface)IRepositoryBase , 然后传递 IEnumerable<IRepositoryBase>给你的构造函数。

此外,由于您的存储库最终由 MyClass 处理不管怎样,它们可能有一些共同的功能;您还可以在 IRepositoryBase 中添加方法对于这个通用功能,然后是 MyClass可以在不需要知道它正在处理的存储库的实际类型的情况下完成它的工作。

示例代码:

public class MyClass
{
private readonly IRepositoryBase[] repos;

public MyClass (IEnumerable<IRepositoryBase> r)
{
repos = r.ToArray();
}

// ...
}

关于c# - 构造函数中有很多参数的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34063705/

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