按名称空间扩展类

时间:2011-03-17 15:52:40

标签: vb.net

我在库中有一个类,没有root命名空间,firstone.dll:

namespace first
    public partial class one
        public sub fun()

        end sub
    end class
end namespace

我的第二个库,没有root命名空间,firstonetwo.dll,引用firstone.dll:

namespace first.one
   public partial class two
       public sub testfun()
            first.one.fun() 'not recognized'
       end sub
   end class
end namespace

namespace first
   public partial class one
        public partial class two
            public sub testfun()
                 first.one.fun() 'also not recognized'
            end sub
        end class
   end class
end namespace

有没有办法在单独的dll中扩展类,仍然可以访问原始类?我不想继承该类只是扩展它。

3 个答案:

答案 0 :(得分:0)

查看“扩展方法”http://msdn.microsoft.com/en-us/library/bb384936.aspx

这是唯一可以不继承的“扩展”形式。

答案 1 :(得分:0)

这是未经测试的

namespace first 
    public partial class one 
        public overridable sub fun() 

        end sub 
    end class 
end namespace

单独的CLASS文件

Imports first
namespace one 
   public partial class fun 
        public overrides sub fun() 

        end sub 
   end class 
end namespace 

答案 2 :(得分:0)

问题是你有一个命名空间和一个具有相同名称的类,这会引起很多混乱。您的第一个示例是one命名空间中名为first的类,而您的第二个示例是two命名空间中名为first.one的类。仅仅因为它们的编写方式相同,两者之间存在很大差异。

Do not name a class the same as its namespace, Part One

修改

你的树看起来像这样:

  • 第一个(ns)
    • 一个(班级)
    • 有趣(方法)
    • one(ns)
    • 两个(班级)

VB在走树时遇到问题,并确定要查看哪个one