我最近在一些C#代码中遇到了一个问题,其中使用带有许多通用参数的外部参数是最自然的解决方案。 (实际上,问题是我们的代码库有两个几乎完全相同的模块,代码重复次数令人沮丧。这些模块由结构上几乎完全相同的类组成,但它们以正常OO抽象(接口/基础)的方式相关class)不足以表达它们的共性。)因此,公共代码中的典型文件可能如下所示:
public partial class Module<T1, T2, ..., TN>
{
public abstract class Foo
{
public virtual T1 DoFoo(T2 t2, T3, t3)
{
//...
}
}
}
其中N
是一个非常大的数字。
当代码正确时,这一切都运行得相当干净,但是当触发编译错误时,Visual Studio会在错误消息中包含通用参数,导致难以辨认的消息,例如:
Error in Module<T1, T2, ..., TN>.Foo.DoFoo
missing ';' on 13:83
Module<...>
业务占用了太多空间,甚至很难看出错误是什么。
理想情况下,我希望能够配置VS 2013 /处理错误消息,以便不包含通用参数,我们得到类似
的内容Error in Module<>.Foo.DoFoo missing ';'