C# 过载发生器

C# 过载发生器,c#,C#,是否有一个应用程序或网站,我可以输入参数信息类型和变量名,它们的默认值,并让它生成所有方法重载的组合 我有一个类,其中构造函数可以接受五个不同类型的参数。参数被映射到属性,这些属性都没有公共setter。每个参数都有一个默认值 我希望我的类为所有参数的各种组合提供重载构造函数,从无参数到五个参数的任何和所有组合。为了让它更混乱,其中一个参数可以作为特定类型或字符串传入,我希望各种重载组合都能考虑到这一点 更新: 我同意这种设计可能不是最好的。我使用的这个类与WPF的DependencyPrope

是否有一个应用程序或网站,我可以输入参数信息类型和变量名,它们的默认值,并让它生成所有方法重载的组合

我有一个类,其中构造函数可以接受五个不同类型的参数。参数被映射到属性,这些属性都没有公共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);

如果你需要这样做,你就做错了。重新思考你的设计,怎么会这样?我看到很多来自BCL的类都有过多的重载构造函数。我脑子里想不出任何东西,但我知道它们是存在的。听起来像是一个糟糕的设计案例。你为什么需要这个?你在构建一个框架吗?许多多重重载都是.NET 1.0/1.1遗留下来的,在那里没有其他选项。你不可能找到一个工具来为你做这件事,这不是你需要的东西。编造一些东西来生成你想要的所有排列也是非常简单的。这很好地回答了我最初的问题,但我仍然很好奇,如果有人对如何改进我的设计有任何想法,请参考我的示例。@mbursill-像您这样扩展问题的问题是,它现在是一个新问题,与原始问题相关的答案可能毫无意义。也许,下一次,问一个新问题。