継承

2011-01-30 26 views
-2

一部のメンバーが保護されている場合は、あなたがそれらにアクセスできることを、ここで言う:誰かが本当に Are private members inherited in C#?継承

を試しましたか?

私はそれも動作しませんしようとしている保護:

public partial class Base 
{ 
    protected IObject myObject; 
} 

私が派生した場合(ベースは別の名前空間であるが、それは当然のインポートのI名前空間を重要ではありません)

public partial class Derive: Base 
{ 

} 

Intellisenseは、派生クラスにmyObjectを表示しません。

したがって、いくつかのメソッドを呼び出すために、すべての派生クラスにmyObjhectメンバーが必要な場合はどうすればよいですか?そのメンバを複製する必要がある場合、継承の使用は何ですか?

更新:私は忘れてしまった:ベースしかし、それはちょうどミスティポだった、もちろん私はそれをやった。実際にあなたが持っている

+0

あなたが言うとき:「インテリセンスが導出クラスでmyObjectというは表示されません。」あなたは 'のメソッド内myObject''にアクセスしようとしているわけ外部からではなく、派生クラス?それ以外の場合は正しいです、あなたはそれを見ることができません... – digEmAll

+0

はいDeriveのメソッド内にあります。 – user310291

答えて

1

Baseクラスから派生:

public partial class Derive : Base 
{ 
} 
+0

mistypo – user310291

+1

これは、 'myObject'は' Derive'クラスからアクセスできるはずです。 –

+0

最後には動作しますが、アセンブリ依存関係のために複数回再コンパイルしなければならなかったのは変です。 – user310291

2

あなたが導出されていません。導出するには、次の操作を実行する必要があります。

public class Base 
{ 
    protected IObject myObject; 
} 

public class Derive : Base 
{ 

} 

myObjectは今Deriveで利用可能です。 Partialは、クラス定義を複数のファイルに分割することを意味します。

+0

それは間違いでした。もちろんベースから派生しましたが、intellisenseはmyObjectを表示しません。 – user310291

+0

それは...少なくともそれは私のためにする必要があります。 – Femaref

0

派生するときに基本クラスが欠けていませんか? protectedとして宣言されたmyObjectで動作する必要があります。

public partial class Derive : Base 
{ 

} 
1

派生クラスは、ベースクラスの パブリック、保護、内部、および 保護された内部部材へのアクセスを有します。派生クラス が基底クラス のプライベートメンバーを継承しても、それらのメンバーにアクセスすることはできません。 ただし、これらのプライベートメンバーはすべて、派生クラスにはまだ が存在し、 は、基本クラス自体で と同じ作業を実行できます。たとえば、 は、保護された基本クラス メソッドがプライベートフィールドにアクセスするとします。その フィールドは継承された基底クラス クラスメソッドが正しく機能するためには、派生した クラスに存在する必要があります。

から:http://msdn.microsoft.com/en-us/library/ms173149.aspx

チェックthis