创建新的 Telerik 数据源实现时出现问题:"does not implement inherited abstract member 'DataSource.CreateClone()'"



我正在调查 Telerik Reporting DataSources 的行为,因为我需要实现一个新的复杂数据源,该数据源与另一个以懒惰方式向 Telerik 提供数据的进程协调。

现在,我想通过实现一个直接实现数据源类的模拟类来研究 Telerik 如何与指定的数据源通信。

class MockDataSource : DataSource
{
internal override object CreateClone()
{
throw new NotImplementedException();
}
}

我添加了CreateClone方法,因为编译器向我显示以下错误:

错误 CS0534 "模拟数据源"未实现继承的抽象成员"数据源.创建克隆((">

但即使添加了方法,上述错误也不会消失,而且添加的方法似乎也没有覆盖任何内容:

错误 CS0115"模拟数据源.创建克隆((":找不到合适的方法来覆盖

我对 C# 很陌生,但我无法弄清楚为什么会发生这种情况; 此外,Telerik 文档没有在任何地方说明自定义数据源的可行性,该数据源不是提供的:https://docs.telerik.com/reporting/connecting-to-data-data-source-components 之一。

这些错误的原因在于 abstact 方法的可见性修饰符CreateClone():检查在 JetBrains Rider 的帮助下从 DLL 中反编译的库代码,可以看到该方法被声明为internal

[...]
namespace Telerik.Reporting
{
[SRCategory("DataSources_Category")]
[ToolboxItemFilter("VS.Telerik.Reporting.14.1.20.513", ToolboxItemFilterType.Require)]
public abstract class DataSource : Component, ISimpleDataSource, IDataSource, INamedObject, ICloneable
{
[...]
internal abstract object CreateClone();
[...]
}
}

因此,我们需要重写的方法在 Telerik 程序集之外是不可见的,因此不可能从第三方程序集实际扩展DataSource抽象类。

相关内容

最新更新