c#编译器错误CS1061由泛型方法
本文关键字:泛型方法 CS1061 错误 编译器 | 更新日期: 2023-09-27 18:05:41
我有一个通用的List-Class,我想使用我的方法CorrectData()从这个类。目前,我已经将方法CorrectData()实现到类loadlist中。如果我把它放入泛型列表,那么我得到一个编译器错误CS1061。
什么错了吗?
谢谢史蒂芬
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();
}
}
}
}
您定义了where T : Base
,然后希望在该类型的项上调用CorrectData()
。此方法在Base
类中不实现。
这个方法是在Load
类中实现的,所以你可以使用where T: Load
来代替,或者在Base
类中添加CorrectData()
方法。
您缺少CorrectData
实现或至少在Base
类中定义。您可以这样定义您的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
方法在后代,像这样:
public class Load : OneNodeElement
{
public override void CorrectData() { }
}