大家好,比方说有一个DLL,包含如下的名字空间:
namespace CompanyName.ProductName.A;
namespace CompanyName.ProductName.B;
namespace CompanyName.ProductName.C;
namespace CompanyName.ProductName.D;
namespace CompanyName.ProductName.E;
namespace CompanyName.ProductName.F;
namespace CompanyName.ProductName.G;当用户想要使用该DLL的时候,不幸往往总要加入一半以上的名字空间,特麻烦,有没有方便的办法呢?比方说把
using CompanyName.ProductName.A;
using CompanyName.ProductName.B;
using CompanyName.ProductName.C;
using CompanyName.ProductName.D;
using CompanyName.ProductName.E;
using CompanyName.ProductName.F;
using CompanyName.ProductName.G;
都加到一个文件"UsingNameSpace.h"里, 然后用户只要#include "UsingNameSpace.h"就行了。(我也不确定行不行,打怪时这个意思)
不过这种方法对C# 程序员行不通,而且用户还要提前知道有这么个特殊的文件存在,另外在Intellisene也不能够自动识别。我曾考虑过把所有的类都指定到一个名字空间里。但是几乎上面的每个名字空间里至少有30个以上的类。我的目的是能够对所有类进行合理的分类用名字空间来区分,但又不想让该DLL的使用者太麻烦。

解决方案 »

  1.   

    嗯,我并不担心性能问题。
    只是考虑用户体验方面的问题,如果能够写一两行代码就能够代替那6~7个using的调用的话,应该不错。我在等等吧,看看其他人有没有好的想法,今天下班前就结贴好了。
      

  2.   

    如果可以的话我们USING System不用写N遍了直接USING IO,USING DATA
      

  3.   

    xu56180825,嗯,其实我也有点觉得这是一个笨问题。
    我又是了一下,如下代码,用户只需using Com.Pro.Total就可以模拟所有的名字空间了,只是我自己麻烦点而已。(只是个想法,实际上用户还是找不到该Com.Prol.Total名字空间。)
    namespace Com.Pro.A
    {
        public class _A1
        { }    public class _A2
        { }
    }namespace Com.Pro.B
    {
        public class _B1
        { }    public class _B2
        { }
    }namespace Com.Pro.C
    {
        public class _C1
        { }    public class _C2
        { }
    }namespace Com.Pro.Total
    {
        using A1 = Com.Pro.A._A1;
        using A2 = Com.Pro.A._A2;
        using B1 = Com.Pro.B._B1;
        using B2 = Com.Pro.B._B2;
        using C1 = Com.Pro.C._C1;
        using C2 = Com.Pro.C._C2;
    }
      

  4.   

    xu56180825,嗯,其实我也有点觉得这是一个笨问题。
    我又是了一下,如下代码,用户只需using Com.Pro.Total就可以模拟所有的名字空间了,只是我自己麻烦点而已。(只是个想法,实际上用户还是找不到该Com.Prol.Total名字空间。)
    namespace Com.Pro.A
    {
        public class _A1
        { }    public class _A2
        { }
    }namespace Com.Pro.B
    {
        public class _B1
        { }    public class _B2
        { }
    }namespace Com.Pro.C
    {
        public class _C1
        { }    public class _C2
        { }
    }namespace Com.Pro.Total
    {
        using A1 = Com.Pro.A._A1;
        using A2 = Com.Pro.A._A2;
        using B1 = Com.Pro.B._B1;
        using B2 = Com.Pro.B._B2;
        using C1 = Com.Pro.C._C1;
        using C2 = Com.Pro.C._C2;
    }
      

  5.   

    那你直接using CompanyName.ProductName就可以了,何必那么麻烦呢?
      

  6.   

    luxi0194,我这里试了下直接using CompanyName.ProductName;,行不通呀。
    用下面的代码创建的DLL,直接using Com.Pro;也不能够直接使用_A,_B等类。
    namespace Com.Pro.A
    {
        public class _A1
        { }    public class _A2
        { }
    }namespace Com.Pro.B
    {
        public class _B1
        { }    public class _B2
        { }
    }namespace Com.Pro.C
    {
        public class _C1
        { }    public class _C2
        { }
    }
      

  7.   

    要是可以,为什么要写 
    using system.io;
    using system....;
    using system....;其实真的很笨的设计,哈哈哈。
      

  8.   

    using system.*;不知道这样可以用吗?
      

  9.   

    那就不写using。
    直接每个用全命名空间。开发程序哪有怕麻烦的
      

  10.   

    此时麻烦是为了你写代码的时候不麻烦.C# 不能像 JAVA一样直接 引入 using System.IO.*;
      

  11.   

    我也比较无奈。
    如果是直接用全名字空间的缺点是每行生命类实例的代码都太长了,影响阅读。另外当用户找一些他不熟悉的类时,还要不停的改名字空间然后一个一个试,这样开发效率太低了。Java里的Import,然后是名字空间外加一个*符号,好像也只能表示该名字空间下的类吧,而不是改名字空间下的子名字空间。虽然开发程序不应该怕麻烦,但是并不能让我们放弃寻找提高开发效率的手段。(只是个人观点)= =!
      

  12.   

    没关系。
    反正编译不过的地方, 打个ctrl+.就全出来了。