私はこのような方法でクラス "タスク"のリストを作成しています。基本クラスのリスト<T>から子クラスのメソッドにアクセスできません。
List<Task> toDoList = new List<Task>;
タスクは、基本クラスであり、そのように設計されています:
public class Task : IDetail
{
string _taskName; //Task title.
string _taskDescription; //Task description.
public Task(string tn, string td) //Constructor.
{
_taskName = tn;
_taskDescription = td;
}
// Method set or return _taskName.
public string taskName
{
get
{
return _taskName;
}
set
{
_taskName = value;
}
}
//Method to set or return _taskDescription.
public string taskDescription
{
get
{
return _taskDescription;
}
set
{
_taskDescription = value;
}
}
public virtual void editList()
{
Creator editCreator = new Creator();
editCreator.Show();
}
}
を何私はTODOをしようとしてきたことは、私が指名を持っている1のような継承されたクラス内に存在するコール方式」であります以下のように定義している。
class Note : Task, IDetail
{
string _noteDescription;
public Note(string nd, string tn, string td) //Constructor.
: base(tn, td)
{
_noteDescription = nd;
}
//Method to set or return _noteDescription.
public string noteDescription
{
get
{
return _noteDescription;
}
set
{
_noteDescription = value;
}
}
public override void editList()
{
noteBuilder editNote = new noteBuilder();
editNote.Show();
}
}
ただし、リスト上の継承されたタスクのメソッドを呼び出そうとすると、エラーが発生します。私はそのような方法にアクセスしようとしています:
toDoList.ElementAt(x).noteDescription;
私の質問はどのようにエラーが発生するのを防ぐのですか?
エラー状態
「toDoList.Task」「noteDescription」と拡張子なしの方法などなど
は、私はおそらく抽象として基本クラスを宣言するれるべきの定義が含まれていませんか?または何か他に私が行方不明ですか?あなたがList<Task>
を持って事前
しかし、これは 'Task'のリストであり、そのサブクラス' Note'のリストではありません。なぜあなたは 'Note'のプロパティにアクセスすることができると期待していますか?リストに 'Task'のインスタンスが含まれていて、' Note'のインスタンスではない場合はどうなりますか? –