2010-07-01 72 views

回答

4

技术上可以通过框架使用的技术代码重写,如Moles。不过,我不会推荐这个。相反,你最好使用一个包装类,它将委托调用给一个包含的对象,并且覆盖你仅仅需要改变的特定方法之后的行为。

+0

谢谢,你能给我一个包装类的例子吗?另一个问题是编译类需要调用这些类中的其他方法,所以如果我重写它们,它们需要调用重写的方法。 – markvpc 2010-07-01 15:05:31

+0

包装仅适用于您使用该类,因为您可以在访问它时构建和使用包装器。包装类上的其他方法不会意识到包装,因此不会按照您的意图工作。您可能需要重新考虑您的设计以完全避免此问题,因为进入IL重写以注入弯路可能会使您的代码难以维护。 – 2010-07-01 15:15:50

0

不,实质上。

正如你所说,你最好的选择应该是派生你自己的类并覆盖有问题的方法(假设它不是密封的)。

您可以使用extension method为课程添加功能。

0

我不这么认为。您可以创建一个扩展方法,但不能访问私有/受保护/内部成员。

0

如果你有源代码但不想改变它 - 分支它。

如果你可以用稍微不同的方法签名,写一个扩展方法。

如果以上都不适合您,并且类必须有具有相同的名称,请继承一个具有相同名称的类,覆盖并将该类放置在不同的名称空间中。通过名称空间区分原始。只是继承正常可能会更容易维护,虽然...

如果你仍然不开心,我不能帮你。

0

不是我所知的。你能解释一下你的情况吗?为什么你需要做这样的事情?