none
大家帮我看看这个错误 RRS feed

  • 问题


  • 错误 提示:“IMapControl3”是“ESRI.ArcGIS.MapControl.IMapControl3”和“ESRI.ArcGIS.Controls.IMapControl3”之间的不明确的引用 
    这是怎么回事?
    2009年8月13日 7:54

答案

  • 你好 这是由于ESRI.ArcGIS.MapControl.IMapControl3”和“ESRI.ArcGIS.Controls.IMapControl3这两个接口名称相同,当你引用了两者命名空间后 直接使用IMapControl3无法辨别到底是哪个
    所以你这个时候要用FullName来比如public ESRI.ArcGIS.MapControl.IMapControl3 mapControl;
    或者ESRI.ArcGIS.Controls.IMapControl3 mapControl;
    具体用哪个由你自己的实际情况定

    举个简单例子 比如教室里有两个人都叫兽兽,一个来自四川,一个来自北京 那么老师在叫人的时候要加上 北京兽兽或者四川兽兽才能区分出来到底是叫的哪个


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月13日 8:04
    版主
  • 你好,引用IMapControl3产生歧义,编译器无法知道你引用IMapControl3是引用哪个。你可以把IMapControl3的fullname来代替IMapControl3,或者修改其中一个IMapControl3的名字。
    jon.valett@gmail.com
    2009年8月13日 8:17
    版主
  • 你好!
         建议使用别名机制来避免冲突,只要在开头添加如下语句就可以了:
         using MC=ESRI.ArcGIS.MapControl;
         using C=ESRI.ArcGIS.Controls;

         使用的时候需要MC.IMapControl3和C.IMapControl3这样来使用!
    周雪峰
    2009年8月13日 10:05
    版主

全部回复

  • 你好 这是由于ESRI.ArcGIS.MapControl.IMapControl3”和“ESRI.ArcGIS.Controls.IMapControl3这两个接口名称相同,当你引用了两者命名空间后 直接使用IMapControl3无法辨别到底是哪个
    所以你这个时候要用FullName来比如public ESRI.ArcGIS.MapControl.IMapControl3 mapControl;
    或者ESRI.ArcGIS.Controls.IMapControl3 mapControl;
    具体用哪个由你自己的实际情况定

    举个简单例子 比如教室里有两个人都叫兽兽,一个来自四川,一个来自北京 那么老师在叫人的时候要加上 北京兽兽或者四川兽兽才能区分出来到底是叫的哪个


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月13日 8:04
    版主
  • 你好,引用IMapControl3产生歧义,编译器无法知道你引用IMapControl3是引用哪个。你可以把IMapControl3的fullname来代替IMapControl3,或者修改其中一个IMapControl3的名字。
    jon.valett@gmail.com
    2009年8月13日 8:17
    版主
  • 你好!
         建议使用别名机制来避免冲突,只要在开头添加如下语句就可以了:
         using MC=ESRI.ArcGIS.MapControl;
         using C=ESRI.ArcGIS.Controls;

         使用的时候需要MC.IMapControl3和C.IMapControl3这样来使用!
    周雪峰
    2009年8月13日 10:05
    版主
  • 你好,从命名规范的角度来说,还是修改名称,区别开这两个接口的名字,比较好些。
    jon.valett@gmail.com
    2009年8月13日 10:41
    版主
  • 那名称如你说的那样修改后,在调用Controls命名空间的IHoopHelper接口时,又该如何处理?谢谢
    2009年8月14日 6:50
  • 你好,IHoopHelper也存在这样的问题?IHoopHelper的调用你还是按原来的方式啊,导入命名控件,继承IHoopHelper接口!
    jon.valett@gmail.com
    2009年8月14日 7:12
    版主
  • 现在是改了一个另外一个又出现不明确的应用,这会是toolbarcontrol.Itoolbarcontrol与controls.Itoolbarcontrol之间不明确应用。。。。。头大很
    2009年8月14日 7:50
  • 你好,

    controls.Itoolbarcontrol改成controls.Icontrol会好些!
    这样toolbarcontrol.Itoolbarcontrol与controls.Icontrol就比较好区分。

    jon.valett@gmail.com
    2009年8月14日 7:56
    版主
  • 有时直接修改类或接口的名字会带来很大的副作用!
    还是建议使用别名机制,方法我上面已经提供了!
    周雪峰
    2009年8月14日 10:49
    版主
  • Dim yourIMapControl as ESRI.ArcGIS.MapControl.IMapControl3
    http://hi.baidu.com/2009ajun
    2009年8月14日 22:19