【发布时间】:2021-03-18 10:38:41
【问题描述】:
我有一个IList<IControl>,它是一个派生自IComponent 的接口,该接口的每个实现都继承自ComponentBase。该组件是从工厂动态实例化的(它返回一个与输入类型兼容的组件)。
现在我想渲染这个列表,但我不知道怎么做,这是我的 ControlsContainer.razor:
@foreach (var control in OrderedControls)
{
<div @key=@Guid.NewGuid().ToString()>
@RenderWidget(control)
</div>
}
如果每个组件类型(它们通过反射动态加载,我不需要在某处注册它们),我想避免 switch/if-else。
【问题讨论】:
-
所以如果我没看错的话,你有一个具体的列表
IList<IControl>你在工厂中创建的具体组件的实例——比如表单的输入控件。您想要做的是将它们添加到带有“工厂”控件的页面中吗?是/否?在提出解决方案之前,我正在尝试了解问题。 -
旁注,但
@key=...部分非常错误。
标签: c# blazor blazor-webassembly