回 帖 发 新 帖 刷新版面

主题:请教一个类库层次带来的问题

//库代码简如下
    class Lib
    {
        public class DataBase
        {
            public Result result;

            public DataBase(string ConnectionString)
            {
                //...
                result = new Result();                
            }

            public bool Open(string sql)
            {
                //...
                return true;
            }

            public bool Close()
            {
                //...
                return true;
            }

            //...
        }

        public class Result
        {
            int iCount = 0;
            public int Count
            {
                get
                {
                    return iCount;
                }
            }

            public string Field(long RowIndex,long ColIndex)
            {
                //...
                return "...";
            }
            public string Field(string RHValue, string CHValue)
            {
                //...
                return "...";
            }

            //...
        }        
    }

    //应用程序代码
    class frmObj
    {
        DataBase ndb;

        public frmObj()
        {
            ndb = new DataBase("...");
        }
        private void Exec(string sql)
        {
            if (ndb.Open(sql))
            {
                for (long i = 0; i < ndb.result.Count; i++)
                {
                    //...
                }
            }
        }
    }

也不知道打侠们能不能看懂

我没有系统的学习过C# 不知道这样写对不对 如果不对的话 请高手点评

问题是这样子的:
我把类库(DataBase与Result等)编译之后 ,在应用程序(frmObj)中应用,没有问题。
但我希望应用程在序引用类库之后,不能看到Result类,所以我将Result类设置成Private,结果会有可访问性不一致的错误,内部类好象也不行,然后我又试了一下abstract,sealed,override,virtual等几个修饰符也没能达到效果,也不知道是不是我使用的时候出的问题还是怎么回事。

希望各位大侠能够帮忙解答一下,怎么才能达到这样的效果。在此谢过了

回复列表 (共6个回复)

沙发

设为internal即可,外部程序集无法访问

板凳


使用internal的话,我就不能对类声明public实例了啊 (public Result result; 会有可访问性不一致的错误)? 是不是我的写法就有问题? 请指点一下该怎么解决? 谢谢~

3 楼

用public Result result;想表达什么用法。要让外部程序集可访问?

4 楼

你class用internal的话,那你的成员使用public的话外部程序集能访问的到吗???

5 楼

我主要想体现也个层次而已

        DataBase 为主类
        Result 和其他类为辅助类

        我在辅助类里添加了 属性 Count Row等值

        然后再在主类(DataBase)里声明一个辅助类(Result)对象 并在主类构造方法里实例化

        这样的话 我在外部程序中 实例化一个主类 就可以间接使用辅类的属性和方法(我想达到效果是:DataBase.Result.Count等)

        现在我弄不明白的问题是:要怎么做才能达到DataBase.Result.Count效果 同时满足在外部程序中无法直接使用辅助类(查看,实例化 等 都不可以 必须使用主类的实例才可以调用)



        也不知道我说的清楚不清楚,如果能看懂的话 ,请指教 谢谢各位了~~~~~

6 楼

那你可以通过设置辅助类的构造方法来实现,不需要更改整个类
毕竟你只是不想让外部类实例化它而已,但是还需要使用到它的实例

我来回复

您尚未登录,请登录后再回复。点此登录或注册