如何解决类型和对象之间的常见命名冲突?

Cat*_*kul 11 c# types namespaces class naming-conventions

由于标准c#约定是大写公共属性的第一个字母,因此类型名称的初始大写的旧c ++约定和非类型名称的初始小写不会阻止经典名称冲突,其中最明显的对象名称与类型匹配名称:

class FooManager
{
    public BarManager BarManager { get; set; } // Feels very wrong.
                                               // Recommended naming convention?
    public int DoIt()
    {
         // 1st and 2nd Bar Manager are different symbols 
         return BarManager.Blarb + BarManager.StaticBlarb;                                                                          
    }
}

class BarManager
{
    public        int Blarb { get; set; }
    public static int StaticBlarb { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

它似乎编译,但感觉很错误.是否有推荐的命名约定来避免这种情况?

Joe*_*oey 7

具有完全相同名称的类型和属性并不罕见.是的,它看起来有点奇怪,但是重新命名属性以避免这种冲突看起来甚至更奇怪.

Eric Lippert有一篇关于这个话题的博客文章.

但是,编译器没有歧义.