我需要装饰第三方DLL中类的所有方法。我使用C#5.0和postharp 3.1。我当然可以做这样的事情。

//In 3rd party library
class A
{
    public virtual int foo(string a) {}

    public virtual void foo2() {}
}

//In my
class B : A
{
    public override int foo(string a) {
        int result = base.foo(a);
        //Do something
        return result;
    }

    public override void foo2() {
        base.foo2();
        //Do something
    }
}

做某事总是一样的。
我不想复制所有难看的方法。一些想法,我可以使用什么或谷歌?谢谢

最佳答案

假设您创建了OnMethodBoundary aspect在该方法的末尾添加一些自定义代码:

[Serializable]
public class MyTestAttribute : OnMethodBoundaryAspect
{
    public override void OnSuccess(MethodExecutionArgs args)
    {
        // Do something.
    }
}

要将这方面应用到第三方聚会,您可以在项目中应用它,并将AttributeTargetAssemblies属性设置为第三方聚会的名称。这将导致PostSharp修改您的程序集,并使用您的自定义代码装饰对第3方程序集的调用。
[assembly: MyTest(AttributeTargetAssemblies = "SomeLibrary")]

关于c# - 锐化后的三等类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24576791/

10-17 00:22