先简单写个程序类。在一个aa.cs类中:
namespace abc
{
   abstract class aa()
   {
     ......
   }
}在bb类中:
namespace abc
{
   class bb():aa
   {
     ......
   }
}将它们封装成DLL。
====================================现在写个新的程序。引入上面的DLL文件。在输入abc. 的时候,请问如何才能:只显示bb这个继承类,而不显示aa这个基类呢?

解决方案 »

  1.   

    你另一个帖子里我回答过了啊,给类定义加上EditorBrowsableAttribute:   [EditorBrowsable(EditorBrowsableState.Never)]
      

  2.   

    你另一个帖子里我回答过了啊,给aa类定义加上EditorBrowsableAttribute:   [EditorBrowsable(EditorBrowsableState.Never)]
      

  3.   

    namespace   abc 

          abstract   class   aa() 
          { 
              ...... 
          } 
    } 在bb类中: 
    namespace   abc 

          class   bb():aa 
          { 
              ...... 
          } 
    } --------------------------确实是访问权限的问题,你在建立类时没有加访问修饰符,所以他为默认是internal
    而internal只可以被本组合体(Assembly)内所有的类存取,组合体是C#语言中类被组合后的逻辑单位和物理单位,其编译后的文件扩展名往往是“.DLL”或“.EXE”。 所以你在另外的项目即(Assembly)以外的项目进行引用,是无法访问的.
    参考namespace abc
        {
            abstract class aa
            {        }
        }    namespace abc
        {
            
            public class bb : aa
            {        }
        }  
      

  4.   

    @symbol441
    基类不对外公开,继承类怎么能对外公开?用2楼的[EditorBrowsable(EditorBrowsableState.Never)]可以达到效果
      

  5.   

    基类的访问权限设置为internal,而继承类访问设置为public 这样就可以达到你要的效果。
    [EditorBrowsable(EditorBrowsableState.Never)]是作用是为了在属性窗口中隐藏该成员,但在代码窗口中还是可以看到这个成员。而且EditorBrowsableAttribute是用来指定某个属性或方法在编辑器中可以查看,而不是类。
    所以不能用EditorBrowsableAttribute来隐藏类。
      

  6.   

    @symbol441 
    基类不对外公开,继承类怎么能对外公开? 
    -------------------------------
    你的问题牧野(高分亮解)已经给出了答案,不知道你是否明白
    继承类只能比基类的可访问性高,而不是继承类的可访问性比基类低
      

  7.   

    其实最简单的办法。将BB实现接口,引入DLL的时候,用接口来接收即可
      

  8.   

    讨论这么多,人就是要IntelliSense不显示,和访问权限有什么关系。