DB 这个类不给直接访问。
AD 这个类允许所有人访问,但AD内要使用DB这个类。并实例化对象。
没分了,大家帮帮忙。

解决方案 »

  1.   

        internal class DB
        {
            private string name;
            public DB(string name)
            {
                this.name = name;
            }        public virtual string Show()
            {
                return "Show "+ name + " " + DateTime.Now.ToString();
            }
        }    public class AD : DB
        {
            public AD(string name)
                :base(name)
            { 
            }
        }
      

  2.   

    没太明白你的意思啊。。
    将这两个类放到一个程序集里呢?DB为internal,AD为public?
      

  3.   

    internal 的构造如何解决?如何让继承的构造internal基类。
      

  4.   

    你的需求是不能用继承实现的
    在基本的语法,或者面向对象的约束里,是不允许private->public这样子的派生类拥有比基类更大的访问权限的要实现你的需求,就不能是"AD is a DB",而是"AD has a DB"public class AD : DB {} 对比一下public class AD 

      private DB data;  
      public AD(string name) { this.data = new DB(name); }
      public virtual String Show() 
      { 
        if (data == null) 
          return null;
        else
          return data.Show();
      }
    }
      

  5.   

    public class AD
    {
        private class DB { }}
      

  6.   

    C# 有个InternalsVisibleToAttribute 属性可以把一个dll里面的internal的东西暴露给指定的dll来用