我目前正试图抽象出一种机制,以便在IAsyncEnumerable可用时枚举它。
我有一个基本组件类,看起来大致像这个
// EnumerableRazorComponentBase.razor
@typeparam TObject
@if (!(this.enumerationTask?.IsCompleted ?? false))
{
// Display loading bar
}
// EnumerableRazorComponentBase.razor.cs
public abstract partial class EnumerableRazorComponentBase<TObject> : ComponentBase
{
private Task enumerationTask;
// rest of enumeration logic...
}
现在我在一个剃刀组件中继承了这个基类
// SomeComponent.razor
@inherits EnumerableRazorComponentBase<IMyInterface>
// other razor markup
@code {
// rest impl
}
EnumerableRazorComponentBase.razor.cs
被正确继承并按预期工作,但EnumerableRazorComponentBase.razor
中的标记没有添加到SomeComponent.razor
的标记中。
有可能从基类继承剃刀标记吗?如果有,我做错了什么/缺少了什么?
是的,这是可能的。只需向基地添加一个呼叫。BuildRenderTree like so:
// SomeComponent.razor
@inherits EnumerableRazorComponentBase<IMyInterface>
@{
base.BuildRenderTree(__builder);
}
<h2>Additional markup in subclassed component</h2>
@code {
// rest impl
}