创建新的 Telerik DataSource 实现时出现问题:"does not implement inherited abstract member 'DataSource.CreateClone()'"
Problem creating new Telerik DataSource implementation: "does not implement inherited abstract member 'DataSource.CreateClone()'"
我正在研究 Telerik Reporting DataSources 的行为,因为我需要实现一个新的复杂数据源,它与另一个以惰性方式向 Telerik 提供数据的进程协调。
现在,我想研究 Telerik 如何通过实现一个直接实现 DataSource class.
的模拟 class 来与指定的数据源对话
class MockDataSource : DataSource
{
internal override object CreateClone()
{
throw new NotImplementedException();
}
}
我添加了 CreateClone
方法,因为编译器向我显示了以下错误:
Error CS0534 'MockDataSource' does not implement inherited abstract member 'DataSource.CreateClone()'
但即使使用添加的方法,上述错误也不会消失,而且添加的方法似乎没有覆盖任何内容:
Error CS0115 'MockDataSource.CreateClone()': no suitable method found to override
我是 C# 的新手,但我不明白为什么会这样;
Telerik 文档也没有在任何地方说明自定义数据源的可行性,这不是所提供的数据源之一:https://docs.telerik.com/reporting/connecting-to-data-data-source-components.
这些错误的原因在于抽象方法的可见性修饰符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 的程序集之外是不可见的,所以实际上不可能从 third-party 扩展 DataSource
抽象 class组装.
我正在研究 Telerik Reporting DataSources 的行为,因为我需要实现一个新的复杂数据源,它与另一个以惰性方式向 Telerik 提供数据的进程协调。
现在,我想研究 Telerik 如何通过实现一个直接实现 DataSource class.
的模拟 class 来与指定的数据源对话class MockDataSource : DataSource
{
internal override object CreateClone()
{
throw new NotImplementedException();
}
}
我添加了 CreateClone
方法,因为编译器向我显示了以下错误:
Error CS0534 'MockDataSource' does not implement inherited abstract member 'DataSource.CreateClone()'
但即使使用添加的方法,上述错误也不会消失,而且添加的方法似乎没有覆盖任何内容:
Error CS0115 'MockDataSource.CreateClone()': no suitable method found to override
我是 C# 的新手,但我不明白为什么会这样; Telerik 文档也没有在任何地方说明自定义数据源的可行性,这不是所提供的数据源之一:https://docs.telerik.com/reporting/connecting-to-data-data-source-components.
这些错误的原因在于抽象方法的可见性修饰符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 的程序集之外是不可见的,所以实际上不可能从 third-party 扩展 DataSource
抽象 class组装.