C#Blazor:如何在代码隐藏中使用@typeparam?(有变通办法)
在Blazor.razor文件中,您可以使用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
@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()
之类的方法。