防止在另一个程序集中使用方法

时间:2017-03-08 09:50:31

标签: c# .net override .net-assembly obsolete

我们正在使用有问题方法的第三方程序集。有没有办法提醒我们的开发人员不要使用该方法,最好是在编译时,但运行时也可以。类似于Obsolete属性但对于另一个程序集。我无法覆盖该方法,因为它不是虚拟的。

1 个答案:

答案 0 :(得分:0)

我可以看到这是可能的唯一方法是将API包装在您自己的程序集中,并让开发人员使用您的程序集而不是提供的程序集。

using MyAPI;

public class MyWrapper
{
    private MyAPI _api;

    public MyWrapper()
    {
       _api = new MyAPI(); //Especially if you want to do some inits
    }

    public void APIMethod()
    {
        _api.APIMethod();
    }
}

我使用相同的方法名称,它将允许您的开发人员用新类替换对象的实例化,或者甚至更加厚颜无耻地调用类,并更改命名空间。

然后,您可以省略违规方法或将其标记为过时。

您甚至可以使用T4模板为您生成代码,以便在API更改时重新生成。如果你使用反射,你甚至可能不必编写T4 ......

关于T4 - https://msdn.microsoft.com/en-us/library/dd820614.aspx

的nmore信息

希望这很有用。