C# 为程序集中的现有类定义默认构造函数

C# 为程序集中的现有类定义默认构造函数,c#,reflection,C#,Reflection,是否有方法为给定程序集中的所有类定义默认构造函数。例如,我在程序集中有这样的类- public class SomeClass { public SomeClass(int x, int y) { } } 这些类都需要一个默认构造函数,但我不想让所有这些类都有一个默认构造函数,那么如何使用反射或类似的东西来实现呢??(可能是TypeBuilder.DefinedDefaultConstructor?) 这些类都需要一个默认构造函数,但我不想用默认构造函数来迷惑所有这些类

是否有方法为给定程序集中的所有类定义默认构造函数。例如,我在程序集中有这样的类-

public class SomeClass
{
    public SomeClass(int x, int y)
    {
    }
}
这些类都需要一个默认构造函数,但我不想让所有这些类都有一个默认构造函数,那么如何使用反射或类似的东西来实现呢??(可能是TypeBuilder.DefinedDefaultConstructor?)

这些类都需要一个默认构造函数,但我不想用默认构造函数来迷惑所有这些类

如果类需要构造函数,则应该包含它。就维护而言,其他任何东西都将是一场噩梦

自动生成构造函数的主要问题是,默认构造函数需要了解所讨论的类,因为它需要正确初始化类的值。在您的示例中,默认构造函数需要做一些事情来设置通常使用
x
y
创建的内部状态。如果不知道类,就无法知道某个东西应该是什么,因此类就是应该定义它的地方

也就是说,没有一种直接的方法可以“向每种类型添加构造函数”。您可能会使用一种工具,比如通过修改重写程序集—基本上是加载程序集、检查每种类型、添加新信息并重写它。或者,您可以使用某种形式的AOP工具,例如,在编译时基于某些属性或类似属性创建构造函数


然而,我反对这些做法。我认为修改代码本身并在适当的时候包含构造函数是正确的方法。

您不能在运行时更改已编译的类以添加默认构造函数

您可以在编译时使用面向方面的编程来实现这一点。退房