我是Blazor编程的新手,可能我的问题已经得到了回答,但我没有找到解决我问题的答案.

我有一个基类:

    public class DomainModel
    {
        [Key]
        public int Id { get; set; }
        [Required]
        public string? Name { get; set; }
    }

它被导入到其他几个类中,例如:

    public class Class1 : DomainModel
    {
       public string AnotherText1 {get;set;}
    }
    public class Class2 : DomainModel
    {
       public string AnotherText2 {get;set;}
    }

我要呈现的页面.

PageClass1.razor
List<Class1> list1
<ListComponent />

PageClass2.razor
List<Class2> list2
<ListComponent />

剃须刀ListComponent应该呈现list1list2DomainModel个属性. 我怎么能做到这一点?

推荐答案

You need a covariant parameter.
An IEnumerable<DomainModel> will accept both lists.

ListComponent.razor ListComponent.razor

@foreach(DomainModel item in Items)
{
   ...
}

@code
{
   [Parameter, EditorRequired]
   public IEnumerable<DomainModel> Items  {get; set; }  // not a List<>
}

然后用法看起来就像

PageClass1.razor
List<Class1> list1
<ListComponent Items="list1" />

PageClass2.razor
List<Class2> list2
<ListComponent Items="list2" />

Csharp相关问答推荐

在Web API操作过滤器中在运行时获取未知类型

C#中的Valkey缓存

try 使用Microsoft Curve通过外部c#应用程序将Azure AD B2C用户分配到组- . PostAsynock错误CS1061

由于小数,如何将一个数字四舍五入到下一个数字?

当我 for each 请求创建实例时,我是否应该在C#中部署httpClient?

Selenium C#嵌套循环

System.Text.Json:反序列化返回为空数组的字典时出错

在C# 11之前, struct 中的每个字段都必须显式分配?不能繁殖

Plotly.NET访问互联网时出现异常

为什么在GuardationRule的收件箱函数中,decode.TryParse(valueString,out valueParsed)在给出1.0.1时返回true?

EF Core Fluent API中定义的多对多关系

通过EFCore上传大量数据.

ITypeLib2.GetLibStatistics()在C#中总是抛出AccessViolationException

从c#列表中删除额外的对象&对象&>从ASP.NET WebForm返回json响应

如何在C#中将方法/线程启动传递给基本构造函数

如何使用MailKit删除邮箱?

DropDownListFor未显示选定值

使DefaultIfEmpty返回空

RavenDb:为什么在字符串==空的情况下过滤会过滤得太多?

使用C#代码和SQL SERVER中的相同证书签名会产生不同的结果