Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对于单个项目,将方法标记为已过时_C#_.net_Visual Studio - Fatal编程技术网

C# 对于单个项目,将方法标记为已过时

C# 对于单个项目,将方法标记为已过时,c#,.net,visual-studio,C#,.net,Visual Studio,由于我们的代码库的工作方式,有人建议我不要在共享代码库中编辑某些方法。相反,我决定创建一个调用旧方法的新方法,并完成我们团队希望该方法完成的新工作。我预见的问题不是团队中的每个人都知道新方法,并且仍然使用共享代码库中的旧方法 TLDR: 共享代码库具有SharedCode.Function 我创建了我们的code.Function来做一些事情,然后调用SharedCode.Function 我无法编辑SharedCode.Function或它包含项目 是否可以在我们的项目中将SharedCode

由于我们的代码库的工作方式,有人建议我不要在共享代码库中编辑某些方法。相反,我决定创建一个调用旧方法的新方法,并完成我们团队希望该方法完成的新工作。我预见的问题不是团队中的每个人都知道新方法,并且仍然使用共享代码库中的旧方法

TLDR:

共享代码库具有SharedCode.Function

我创建了我们的code.Function来做一些事情,然后调用SharedCode.Function

我无法编辑SharedCode.Function或它包含项目

是否可以在我们的项目中将SharedCode.Function标记为已过时的编译器警告,或者以其他方式将我们的Code.Function标记为已过时的编译器警告

编辑:

可能值得一提的是,这些都是日志函数,因此如果开发人员不小心调用了SharedCode.Function而不是我们的Code.Function,那么唯一的结果就是我们捕获的数据比我们想要的少,它仍然可以正常编译和运行。这是我想尝试将其作为编译器警告的一个主要原因,以便任何不知道如何使用新函数的开发人员都能找到它

最短的方法是添加
obsoletattribute
作为属性 对方法进行了修改。确保包括适当的解释:


我认为适配器模式在这个特定场景中可能会产生奇迹。实际上,您最终在我们的代码和SharedCode之间创建了一个抽象

这将隔离对共享代码函数的访问,以便只有适配器可以使用共享代码的函数。适配器中的一些函数最终可能只是提供了一个传递,但其中一些函数将具有需要应用的额外逻辑(例如,在您询问的场景中),而拥有适配器使您能够轻松地实现这一点

所有客户端代码都必须使用适配器,因为它们无法直接访问共享代码

如果您可以访问源代码,我建议您使用其他人指出的过时属性。但是,由于您不能访问代码库,我认为在代码和不可访问的代码之间建立一个抽象层是非常有益的

现在很明显,我不知道你的场景的全部范围,关于这是否有意义实际实施,所以不要盲目驾驶,但希望这能给你一些想法!:)

请参考四人帮书籍或参阅以下参考资料:


这可能行得通—您可以使用xml样式的注释,这样注释将在visual studio中与Intelissense一起出现。您是否考虑过编写?
我无法编辑SharedCode.Function或它包含项目。
我会这样做。我将创建一个带有此属性的本地方法(本地,我的意思是你说的“我们的代码”),它只调用共享代码方法,并重构所有本地代码,以便通过这个新的带注释的方法只调用共享代码。我知道你来自何方,但我不确定这在我的情况下是否可行。我用更多的信息编辑了我的OP,但要点是SharedCode.Function和我们的Code.Function都可以正常工作,如果使用的话,我们的版本只需要捕获更多的数据来记录,因此,我不确定如何防止使用SharedCode,因为一开始就不需要适配器。我是否可以建议作为与团队的沟通/培训来解决这一问题?我的意思是,对我来说,这似乎是最合乎逻辑的途径,因为你无法访问代码库以将其标记为过时,而且在代码库上放置一个抽象层以使其真正不可访问似乎是不切实际的。考虑到你做了代码审查,如果没有访问代码库的权限,执行这项任务也不会太糟糕,或者愿意把它抽象出来,没有很多切实可行的选择来实施它。根据您的代码审查软件,您可能能够设置一个规则来准确捕获此场景并自动使其失败。
[Obsolete("Method1 is deprecated, please use Method2 instead.")]
public void Method1()
{ … }