C# 是否可以重写dll文件中类中的方法?
我已经在我的windows窗体项目中包含了一个dll文件。 1.是否可以完全重写特定的类? 2.是否可以向dll文件中的特定类添加新方法? 3.是否可以重写dll中类中的方法 我希望避免的备选方案: 我知道我可以使用扩展方法来创建静态的新方法。 我还可以从特定类继承,然后向派生类添加新方法 我正在努力实现的目标: 我现在必须创建一个项目,并将其作为dll文件添加到一个更大的项目中。 但有人告诉我们,下个月我们需要在原来的项目中添加更多功能。我在想最好的办法。C# 是否可以重写dll文件中类中的方法?,c#,oop,C#,Oop,我已经在我的windows窗体项目中包含了一个dll文件。 1.是否可以完全重写特定的类? 2.是否可以向dll文件中的特定类添加新方法? 3.是否可以重写dll中类中的方法 我希望避免的备选方案: 我知道我可以使用扩展方法来创建静态的新方法。 我还可以从特定类继承,然后向派生类添加新方法 我正在努力实现的目标: 我现在必须创建一个项目,并将其作为dll文件添加到一个更大的项目中。 但有人告诉我们,下个月我们需要在原来的项目中添加更多功能。我在想最好的办法。 较小的项目基于mvc设计。您当然可以
较小的项目基于mvc设计。您当然可以重写从类库中的类继承的虚拟方法。例如,您可以在任何时候重写
object.ToString()
时执行此操作
但你不能“完全重写一个类”,我甚至不知道这意味着什么。同样,您不能将方法添加到现有类中,尽管您可以:
- 使用扩展方法“假装”添加另一个方法(但没有状态,也没有属性)
- 从类派生(假设它未密封)并声明自己的额外方法
当前的最佳实践是对这类事情使用控制反转(例如),如果您对所有依赖项都有一个中心位置,那么您可以在运行时以自己喜欢的方式将它们连接起来,根据自己的意愿截取零碎的部分 实际上,您可以使用ICorProfiler和许多令人头痛的问题“完全重写类”。某些内容也可以用ICorDebug@Sam-您是否真的建议某人在运行其生产应用程序时,将某些内容附加到分析或调试API?你总是可以用足够的时间和精力去做一些事情,但我认为假设Jon的意思是你不能以任何理智的方式来做这件事是安全的。你也可以用postsharp的加载器来编织东西,这样就不那么痛苦了。有些问题需要编织,例如,如果您试图分析SqlClient的一些部分,以便获得SQL调用的堆栈跟踪。当然,这是一个雷区,不像Ruby alias_方法那样性感。我发现:程序的基本功能必须在其基础上进行更改。那是没有办法的。继承类允许您将子类与实现相同接口的另一个子类交换。对我来说,整个问题的出现是因为我使用的是sql数据库,显然在OO代码中几乎不可能对其进行建模。如果有一种方法可以拦截方法调用,运行另一种方法并将值返回给原始调用方法,那么是的,我想知道如何实现。您试图覆盖哪个类?如果是Namespace1.dll中的类Namespace1.Class1,那么只需从头重写Namespace1.Class1,并放入Namespace1.dll,然后使用反射截获其他调用,并通过后端传递它们。