2017-12-28 38 views
-1

EDIT:SOLVED私は時々馬鹿です。 ...以下の私の自己の答え私はインターフェイスや多型BaseClassは一致する戻り値の型がないため、interface.variableを実装できません


public interface IFile 
{ 
    List<string> Contents {get;set;} 
} 

public class File : IFile 
{ 
    public List<string> Contents {get;set;} 
} 

public interface ICommandFile : IFile 
{ 
    new List<ICommandFileLine> Contents {get;set;} /*ICommandFileLine is defined in the code as well, but I don't believe this is pertinent to the issue I am having.*/ 
} 

public class CommandFile : File, ICommandFile 
{ 
    public new List<ICommandFileLine> Contents {get;set;} 
} 

を使用して、次のC#.Net4.5コードに取り組んでいます

を参照してください。

上記を試してみると、プリコンパイラは文句を言う:

CommandFileはインターフェイスmemeber "ICommandFile.Contents"を実装していません。それは「リスト[ICommandFileLine]」

インターフェイスメンバー「リストICommandFile.Contents」のマッチングリターン タイプを持っていないため、「File.Contents」は 「ICommandFile.Contents」を実装することはできません実装 ではありません。

わかりません。私は新しいキーワードを使用していますが、これは基本クラスをカプセル化して新しい変数型を定義したいことを示しているはずです。

答えて

0

CommandFileクラスにあるように、インターフェイスメンバの実装に 'new'とマークする必要はありません)。これは、実装クラスのメンバがインターフェイスから継承されたメンバと無関係であることを意味します。

-1

私は投稿後5分間違っていなかったものを実現:[ICommandFile]内容に等しい

一覧!いいえ、{get; set;}

は変更:

新しいリスト[ICommandFileLine]内容量=新しいListICommandFileLineを。私の地元のコードで

へ:

新しいリスト[ICommandFileLine]の内容は、{を取得または設定します;}

私はまだインタフェースを実装し、作るのは比較的新しいです恥ずかしい...

これらの間違いは時々あります。

+0

あなたが答えるのに十分なのであれば、あなたはそれをフォーマットするのに十分です:) –

+0

私は、私のOPと私の返信をフォーマットしました。私はこのサイトのファンキーなマークを与えられました。それがあなたにとって大変重要で、あなたが能力を証明しているので、私のゲストになれ。 –

1

汎用インターフェース - IFile<T>を試してください。その後、ICommandFileIFile<CommandLine>.を実装していますか?

関連する問題