发电机过载
本文关键字:发电机 | 更新日期: 2023-09-27 18:22:02
有没有一个应用程序或网站可以让我输入参数信息(类型和变量名)及其默认值,并让它生成方法重载的所有组合?
我有一个类,构造函数可以接受五个不同类型的参数。参数被映射到属性,而这些属性都没有公共setter。每个参数都有一个默认值。
我希望我的类为所有各种参数组合(从没有参数到五个参数的任何和所有组合)提供重载构造函数。更令人困惑的是,其中一个参数可以作为特定类型或字符串传入,我希望重载的各种组合都能考虑到这一点。
更新:
我同意这种设计可能不是最好的。我使用的类与WPF的DependencyProperty的PropertyMetadata类类似。为属性backing分配了一个值,并且在那时传入元数据类的一个新实例。它迫使我手工创建这个级联的构造函数重载系列。示例:
private ModelProperty<UserModel, string> firstNameProperty =
RegisterProperty(p => p.FirstName, new ModelPropertyMetadata(**** lots of overloads here ****));
public string FirstName
{
get { return GetValue(firstNameProperty); }
set { SetValue(firstNameProperty, value); }
}
也许这不是最好的设计。我可能会将ModelPropertyMetadata扩展到描述特定重载的新类,但这似乎只是将问题推到了其他地方。对如何使这个设计变得更好有什么想法吗?
看看可选参数-这些参数应该可以帮助您避免多次重载,并且仍然提供调用构造函数的多种方法。这是.NET 4.0的一项功能。
为什么不使用可选参数?
public MyClass(String myVar = null, Int32 v0 = 5, ...) { .. }
你可以这样称呼ctor:
new MyClass(v0: 10);
我不知道有哪个,但我建议您创建一个简单的类型,它包含参数并具有默认逻辑,然后将该类型传递到您的类中,因为您的建议很难维护。