从dll C#更改方法

时间:2015-12-28 15:06:42

标签: c# .net method-overriding avalondock

我在我的解决方案中使用了avalondock 2.0 dll,我需要在另一个项目中从DockingManager.cs更改String name; do { System.out.print("name: "); name = scanner.nextLine(); if (!name.matches("[A-Za-z]+")) { System.out.println("Wrong input, try again!"); } } while 方法。 但是,我不想在源文件中执行此操作。该方法不是虚拟的,我不能像这样覆盖它

IOverlayWindowHost.GetDropAreas

2 个答案:

答案 0 :(得分:2)

虽然一般情况下不推荐,但您可以使用C#功能显式重新实现接口的单个​​方法,例如

class CustomDockingManager : DockingManager, IOverlayWindowHost
{
    IEnumerable<IDropArea> IOverlayWindowHost.GetDropAreas(LayoutFloatingWindowControl draggingWindow)
    {
        // ...
    }
}

请注意,这种方式无法使用基本实现,您必须从头开始编写方法。

答案 1 :(得分:1)

您需要执行 IL weaving 来更改非虚拟方法。你在这里有很多选择。