|
|
1
7
如果可能,让每个构造函数执行验证。但这并不总是可取的。在这种情况下,我个人更喜欢工厂模式,因为它保持了实现的直截了当,而且它还提供了一个拦截点,以后可以在这里添加其他行为(日志记录、缓存等)。然而,有时工厂没有意义,在这种情况下,我会认真考虑创建一个立场确认器类型的第四个选项。 下面是代码示例:
|
|
|
2
5
如果您仍然要使用子类来验证参数,为什么不直接在子类构造函数中进行验证呢?我理解您所追求的原则,即强制任何从基类派生的类验证其参数。但即使这样,基类的用户也可以简单地实现
对我来说,我通常把这种验证放在调用任何方法的开头。例如,
|
|
|
3
3
我建议使用 Single Responsibility Principle
然后可以将其添加到基本构造函数中,并在那里调用validate方法:
这种方法有一个隐藏的好处,那就是它允许您更容易地重用跨操作通用的验证规则。如果您使用的是IoC容器,那么您还可以轻松地添加绑定约定,以便根据TActionParameters的类型适当地自动绑定IParameterValidator实现 |
|
|
4
1
我在过去遇到过一个非常类似的问题,最后我将验证参数的逻辑移到了适当的位置
如果不是这样,那就更痛苦了。你有以下选择(我个人更喜欢第一个):
|
|
|
5
0
现在,具体类必须考虑参数并确保其有效性。我会强制执行
|
|
|
6
0
您可以通过更改参数属性的getter/setter来实现这一点,这样任何使用参数的东西都会在第一次使用时验证它们。 |
|
|
7
0
预期使用的参数在哪里:来自CommonMethod?不清楚为什么参数必须在实例化时有效,而不是在使用时有效,因此您可以选择让派生类在使用前验证参数。
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |