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工具,例如,在编译时基于某些属性或类似属性创建构造函数
然而,我反对这些做法。我认为修改代码本身并在适当的时候包含构造函数是正确的方法。您不能在运行时更改已编译的类以添加默认构造函数 您可以在编译时使用面向方面的编程来实现这一点。退房