C#Blazor:如何在代码隐藏中使用@typeparam?(有变通办法)

C#Blazor:如何在代码隐藏中使用@typeparam?(有变通办法),c#,blazor,C#,Blazor,在Blazor.razor文件中,您可以使用@typeparam MyType来使用通用参数。 例如: MyComponent.razor @typeparam MyType <SomeHtml /> @code { [Parameter] public List<MyType> MyList{ get; set; } } @inherits MyComponentCode<MyType> @typeparam MyType @type

在Blazor.razor文件中,您可以使用
@typeparam MyType
来使用通用参数。 例如:

MyComponent.razor

@typeparam MyType

<SomeHtml />

@code
{
    [Parameter]
    public List<MyType> MyList{ get; set; }
}
@inherits MyComponentCode<MyType>
@typeparam MyType
@typeparam MyType
MyComponent.razor.cs

public class MyComponentCode<MyType> : ComponentBase
{
    [Parameter]
    public List<MyType> MyList{ get; set; }
}
public partial class MyComponent<MyType>
{
    [Parameter]
    public List<MyType> MyList{ get; set; }
}
MyComponent.razor.cs

public class MyComponentCode<MyType> : ComponentBase
{
    [Parameter]
    public List<MyType> MyList{ get; set; }
}
public partial class MyComponent<MyType>
{
    [Parameter]
    public List<MyType> MyList{ get; set; }
}
公共部分类MyComponent
{
[参数]
公共列表MyList{get;set;}
}
呼叫

<MyComponent MyType="MyTypeABC" />

您非常接近,只需将
partial
添加到类定义中:

using Microsoft.AspNetCore.Components;

namespace BlazorApp1.Components
{
    public partial class MyCustomComponent<T> : ComponentBase
    {
        [Parameter]
        public string Label { get; set; }
    }
}
使用Microsoft.AspNetCore.Components;
名称空间BlazorApp1.Components
{
公共部分类MyCustomComponent:ComponentBase
{
[参数]
公共字符串标签{get;set;}
}
}
剃须刀部分:

@namespace BlazorApp1.Components
@typeparam T

<label>@($"{Label}. Provided type is {typeof(T).Name.ToUpper()}")</label>
@namespace BlazorApp1.Components
@类型参数T
@($“{Label}。提供的类型是{typeof(T.Name.ToUpper()}”)
用法(Index.razor):

@page/“
@使用BlazorApp1.组件

这样,您就不需要从它继承您的组件,因为它们都成为同一个类的一部分。

谢谢,这不是我想要的(typeparam in.cs文件),但是是的
部分类MyComponent
@inherits MyComponent
更好。在这种情况下,还可以删除ComponentBase的继承(
:ComponentBase
),因为组件本身已经是ComponentBase;),这意味着您仍然可以使用诸如
protected override void OnInitialized()
之类的方法。