发电机过载

本文关键字:发电机 | 更新日期: 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);

我不知道有哪个,但我建议您创建一个简单的类型,它包含参数并具有默认逻辑,然后将该类型传递到您的类中,因为您的建议很难维护。

相关文章: