该类型没有定义构造函数

时间:2016-08-25 09:37:15

标签: c#

我正在尝试继承一个容器类,它是另一个具有以下结构的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

为什么它会引发错误并限制我的注意力。我怎样才能克服它?

1 个答案:

答案 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();
}