2015-05-27 29 views
-2

访问属性我有以下的基类:无法在基类

namespace NamespaceA 
{ 
    public class ClassA 
    { 
     public ClassA(); 

     public MyType Foo { get; } 
    } 
} 

以及它的衍生下面的类:

using NamespaceA; 
namespace NamespaceB 
{ 
    public sealed class ClassB : ClassA 
    { 
     ... 
     private void MyFunc() 
     { 
      var foo = this.Foo; 
     } 
    } 
} 

一切编译奇妙。

当我运行这个,它访问this.Foo崩溃。如果我把私有方法中的断点,这条线之前,使用即时窗口来检查Foo,我得到如下:

me: Foo 
Immediate Window: The name 'Foo' does not exist in the current context 
me: this.Foo 
Immediate Window: 'NamespaceB.ClassB' does not contain a definition for 

Foo并没有扩展方法Foo接受一个类型的第一个参数可以找到Namespace.ClassB(您是否缺少使用指令或装配参考?)

任何想法可能发生什么?完全披露,ClassA是由另一组实施的另一个程序集。如果需要,我可以到代码中,但它不是现成的。

+6

为什么这个标记为C++? –

+0

这是什么,但肯定无效的C++代码。你的意思是实际上标记[tag:c#]之类的东西吗? –

+0

*“A类是另一个组实现的另一个程序集。”*听起来像需要从中获取代码。没有他们的源代码,你基本上是盲目编码的。 –

回答

1

this指的是ClassB,但FooClassA中声明。试试这个:

public sealed class ClassB : ClassA 
{ 
    ... 
    private void MyFunc() 
    { 
     var foo = Foo; // or: var foo = base.Foo; 
    } 
} 
+0

感谢您的建议。不幸的是,这产生了相同的结果。我怀疑另一个组件中存在这个问题。我会走这条路。 –