是否可以覆盖dll文件中的类中的方法?

时间:2009-08-04 22:26:01

标签: c# oop

我在我的Windows窗体项目中包含了一个dll文件。 1.是否可以完全覆盖特定的类? 2.是否可以在dll文件中为特定类添加新方法? 3.是否可以覆盖dll中类中的方法?

替代方案我宁愿避免: 我知道我可以使用扩展方法来创建静态新方法。 我也可以继承特定的类,然后向派生类添加新方法。

我想要实现的目标: 我现在必须创建一个项目,并将其作为dll文件添加到更大的项目中。 但是我们被告知我们下个月需要为原始项目添加更多功能。我正试图找出解决这个问题的最佳方法。 较小的项目基于mvc设计。

2 个答案:

答案 0 :(得分:2)

您当然可以覆盖从类库中继承的虚拟方法。您可以在覆盖object.ToString()时执行此操作,例如!

你不能“完全覆盖一个班级” - 我不知道这甚至意味着什么。同样,您无法向现有类添加方法,但您可以:

  • 使用扩展方法“假装”添加另一个方法(但没有状态,没有属性)
  • 从课堂派生(假设它没有密封)并声明你自己的额外方法

如果你能告诉我们你想要达到的目标,建议你如何继续下去会更容易。

编辑:当您需要为原始项目添加更多功能时,只需将其添加到原始项目即可。你有什么理由不能在以后改变这个项目吗?

答案 1 :(得分:0)

  

我想要实现的目标:我必须这样做   现在创建一个项目并将其添加到   较大的项目作为DLL文件。但   我们被告知我们需要添加   原始功能更多   项目下个月。我试着   找出最好的方法   这个。较小的项目是基于   mvc design。

目前的最佳做法是对这些事情使用控制反转(例如ninject),如果你有所有依赖关系的中心位置,你可以在运行时加入它们,拦截它们你想要的点点滴滴。