2011-12-31 12 views
5

を設定して上書きすることはできません:は、保護されたプロパティの私は、次の基本クラスを持っている

abstract class Base 
{ 
public abstract object Var 
{ 
    get; 
    protected set; 
} 
} 

そして、この派生クラス:

class Derived : Base 
{ 
public override object Var 
{ 
    get {//code here 
    } 
    set {//code here -- I get error here! 
    } 
} 
} 

しかし、私はこのエラーを取得しています:

Cannot change access modifier when overriding 'protected' inherited member 'Var'

私は設定する前にprotectedとのキーワードを追加しようとしましたが、助けにはなりませんでした。これをどうやって解決するのですか?

UPDATE:
基底クラスサブクラスが作成時にVarのための価値を提供することを確認する必要があります。ですから、私はSetterをBaseクラスで宣言する必要があります。
また、プライベートメンバー変数を宣言してこれを行い、セッターを削除することもできますが、これは説明したようにオプションではありません。here

答えて

8

問題は、派生クラスのsetpublic visiblityがあることです。これは、protectedを明示的に指定していないためです。

class Derived : Base { 
    public override object Var { 
     get { return null; } 
     protected set { // <------ added protected here 
     } 
    } 
} 
+1

ああ私の神:このプロパティのセットは、お使いのベースクラスでの視認性を保護していたので、あなたはエラー

cannot change access modifiers when overriding 'protected' inherited member

あなたの派生クラスでセット保護の視認性を与えることによって、それを修正することができますを取得しています!愚かなVS!私が私のポストで言ったように、私はこれを試してみたが、助けにはならなかった。あなたがそれを言いました、それはまだ動作しませんでした、私はあなたの答えを見直して再コンパイルし、それが消えたと再試行しました!では今私は何をしますか?私はあなたの答えを受け入れるべきですか、私は私の投稿を削除すべきですか? – atoMerz

+0

@AtoMerZ - 私は最良の答えを受け入れていきます。質問は答えをアップアップしているので、それを削除するにはMODが必要です。誰のためにも問題はありません。 –

関連する問題