2016-09-05 32 views
1

私は汎用のList-Classを持っています。このクラスのメソッドCorrectData()を使用したいと思います。 現時点では、メソッドCorrectData()をクラスLoadListeに実装しました。私はこれをgenericリストに入れると、コンパイルエラーCS1061が出ます。C#コンパイラエラーCS1061 by genericメソッド

何が間違っていますか?

おかげ ステファン

using System.Collections.ObjectModel; 

namespace WindowsFormsGenerics 
{ 
    /// <summary>Basisklasse für alle Elemente </summary> 
    public class Base 
    { 
     /// <summary> Elementname </summary> 
     public string Name { get; set; } 

     /// <summary> Beschreibung </summary> 
     public string Description { get; set; } 
    } 
    public class Knoten : Base { } 
    public class OneNodeElement : Base 
    { 
     /// <summary> KnotenOne des Elementes </summary> 
     public Knoten KnotenOne { get; set; } 
     /// <summary> Schaltzustand am KnotenOne </summary> 
     public bool SwitchOne { get; set; } 
    } 
    public class Load : OneNodeElement 
    { 
     public void CorrectData(){} 
    } 
    public sealed class LoadListe : Liste<Load> 
    { 
     public void CorrectData() 
     { 
      foreach (Load item in this) 
      { 
       item.CorrectData(); 
      } 
     } 
    } 

    public abstract class Liste<T> : Collection<T> where T : Base 
    { 
     public T GetItem(string searchsString, string parameter = "NAME") 
     { 
      return null; 
     } 

     public void CorrectData() 
     { 
      foreach (T item in this) 
      { 
       item.CorrectData(); 
      } 
     } 
    } 
} 
+0

ですか?また、エラーが発生した行を示します。あなたはすでに知っている情報を隠すことによって、時間を無駄にしています! – Phil1970

答えて

0

CorrectData実装または少なくともBaseクラス内の定義がありません。

public class Base 
{ 
    /// <summary> Elementname </summary> 
    public string Name { get; set; } 

    /// <summary> Beschreibung </summary> 
    public string Description { get; set; } 

    public virtual void CorrectData() { } 
} 

をし、このように、子孫にCorrectDataメソッドをオーバーライドします:あなたはこのようなあなたのBaseクラスを定義することができ、それはまた、エラーメッセージを与えるためにあまりにもハード

public class Load : OneNodeElement 
{ 
    public override void CorrectData() { } 
} 
+0

このメソッドを使用します。タンクシュテファン –

1

あなたはwhere T : Baseを定義し、その型の項目にCorrectData()を呼びたいです。このような方法は、Baseクラスでは実装されていません。

このメソッドはLoadクラスに実装されているため、代わりにwhere T: Loadを使用するか、BaseクラスにCorrectData()メソッドを追加することができます。

関連する問題