我正在尝试创建一个具有 3 种泛型类型的类,其中一种类型必须从具有其他 2 种泛型类型的其他类继承。
我真正需要的是IForm
继承自FormComponent
所以它实现了所有的方法。
Form.razor
@typeparam TForm
@typeparam TModel
@typeparam TResult
<EditForm Model="@Model" OnValidSubmit="@HandleValidSubmit">
@ChildContent
</EditForm>
表单.razor.cs
public partial class Form<TForm, TModel, TResult>
where TForm : FormComponent<TModel, TResult>
{
[Parameter]
public TForm FormRef { get; set; }
[Parameter]
public EventCallback<TResult> OnValidSubmit { get; set; }
[Parameter]
public TModel Model { get; set; }
// ...
// some other properties
}
表单组件.cs
public abstract class FormComponent<TModel, TResult> : BaseDomComponent
{
[CascadingParameter]
public TModel Model { get; set; }
public abstract TResult OnValidSubmit();
// ...
// some other properties
}
我使用表单的代码
<Form Model="@Entity" FormRef="@_formRef" OnValidSubmit="@HandleValidSubmit">
<XYZForm @ref="_formRef" />
<Button ButtonType="ButtonType.Submit">Submit</Button>
</Form>
但这给了我错误
错误 CS0314 类型“TForm”不能用作泛型类型或方法“Form<TForm,TModel,TResult>”中的类型参数“TForm”。没有从 'TForm' 到 'Core.Web.Base.FormComponent< TModel, TResult >' 的装箱转换或类型参数转换
我在很多地方搜索了这个错误,但没有发现任何有 3 种泛型类型的情况。我也阅读了文档 ,但无法用它来解决我的问题。