我正在尝试继承一个容器类,它是另一个具有以下结构的DLL的一部分
namespace MySdk
{
// Summary:
// Container class used to encapsulate individual mark details
public class MathsReport: IEnumerable
{
// Summary:
// A list of mark details.
public List<Mark> Marks;
// Summary:
// Get access to the C# IEnumerator interface of the mark reports list.
//
// Returns:
// The IEnumerator interface to the list of mark reports.
public IEnumerator GetEnumerator();
}
}
我的代码
public class MyReport : MathsReport
{
}
抛出The type MySdk.MathsReport has no constructors defined
。
为什么它会引发错误并限制我的注意力。我怎样才能克服它?
答案 0 :(得分:0)
重申评论中所说的内容,MathsReport
没有公共构造函数,这意味着你无法有效地继承它。
但是,您可以添加扩展方法来执行各种“额外”操作,而无需实际继承该类。显然这与实际继承不同,但对于您的用例可能就足够了。
扩展类的示例:
public static class MathsReportExtensions
{
public static Mark GetBestMark(this MathsReport mathsReport)
{
//this is just a sample code which returns the first Mark from the collection
return mathsReport.First();
}
}
用法:
using NamespaceToExtensionClass;
//...
public void SomeMethodUsingMathsReport(MathsReport mathsReport)
{
var bestMark = mathsReport.GetBestMark();
}