gpt4 book ai didi

c# - 在解决方案中显示类名的 ComboBox 项

转载 作者:太空狗 更新时间:2023-10-30 01:00:55 26 4
gpt4 key购买 nike

我有一个公共(public)抽象类 Client,它有两个继承类 CustomerTimeWaster

我在 C# Windows Forms 上创建了一个下拉菜单,我想将这两个类名称显示为选项:Customer 和 TimeWaster。

我所能想到的就是创建一个包含这两个术语的简单List,然后将该列表绑定(bind)到组合框DataSource:

List<string> clientType = new List<string>()
{
    "Customer",
    "TimeWaster"
};

public frmClientScreen()
{
    cmboxClientType.DataSource = clientType;
}

但这不是可维护的,因为将来我可能会添加许多其他类,我希望它们的名称显示在下拉菜单中。

如何将我的 Visual Studio 解决方案 中的类名链接到组合框显示的项目?

最佳答案

获取一组已知类型的类型名称:

List<string> clientType = new List<string>()
{
nameof(Customer),
nameof(TimeWaster)
};

public frmClientScreen()
{
cmboxClientType.DataSource = clientType;
}

关于动态获取从特定类型派生的所有类型,这 question显示了如何执行此操作的示例。

来自该问题的已接受答案:

var listOfBs = (from domainAssembly in AppDomain.CurrentDomain.GetAssemblies()
from assemblyType in domainAssembly.GetTypes()
where typeof(B).IsAssignableFrom(assemblyType)
select assemblyType).ToArray();

B 应替换为您的基类。

然后,在获取派生类型列表后,您可以执行以下操作:

var clientTypes = listOfBs.Select(x => x.Name).ToList();

关于c# - 在解决方案中显示类名的 ComboBox 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42861379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com