我在Visual Studio intellisense的方法存根生成中发现了一个错误。
class A { }
class B : A
{
A a;
void f() { a.NewMethod(); }
}
当我在a.NewMethod()
选择“Generate Method Stub”时,我应该得到一个公共方法。相反,intellisense会自我混淆并为我创建一个受保护的方法。
编译器正确地抱怨protected void NewMethod()
中对生成的A
的调用。
有没有办法向微软报告? This post说这是一个不可能通过的任务。
答案 0 :(得分:6)
转到Microsoft Connect网站。至少他们在那里听。当然,可能需要一段时间才能收到答案(或修复)。
答案 1 :(得分:3)
每个Microsoft预期的行为是
“如果通过派生类类型进行访问,则只能在派生类 中访问基类的受保护成员。”
http://msdn.microsoft.com/en-us/library/bcd5672a(VS.71).aspx
在你的情况下,a.NewMethod()会产生一个错误,因为A不是从B派生出来的。这正是你所说的。
因此,“Generate Method Stub”命令存在缺陷。
也就是说,使用Microsoft Connect进行错误报告。让我知道bug是什么,我会在那里投票。
答案 2 :(得分:1)
假设您的错误是一个错误,请在相关的microsoft.public新闻组中发帖。他们通常很敏感。
答案 3 :(得分:1)
抱歉,你是对的。我刚用Resharper的存根生成器尝试了这个,它创建了一个公共方法。