c#派生类型到组合框

c#派生类型到组合框,c#,winforms,combobox,abstract-class,C#,Winforms,Combobox,Abstract Class,我有一个抽象类 public abstract class PairingMethod : IPairingMethod { virtual string Name { get; } = "Default Pairing"; protected ICollection<IPlayer> PlayersToPair { get; set; } protected PairingMethod(ICollection<IPlayer> playe

我有一个抽象类

public abstract class PairingMethod : IPairingMethod
 {
    virtual string Name { get; } = "Default Pairing";

    protected ICollection<IPlayer> PlayersToPair { get; set; }


    protected PairingMethod(ICollection<IPlayer> players )
    {
        PlayersToPair = players;
    }

    public virtual void GeneratePairingsForRound(IRound round)
    {
        throw new System.NotImplementedException();
    }

}
公共抽象类PairingMethod:IPairingMethod
{
虚拟字符串名称{get;}=“默认配对”;
受保护的ICollection PlayersToPair{get;set;}
受保护的配对方法(ICollection播放器)
{
PlayersToPair=玩家;
}
公共虚拟void generatePairingForRound(IRound round)
{
抛出新系统。NotImplementedException();
}
}
现在,我尝试基于从上述基类派生的所有类型创建一个组合框。我创建了组合框,它使用类名作为项目,但是当触发组合框更改事件时,我需要知道选择了哪个派生类。然后我可以创建该类的一个实例,用于生成配对

我尝试用PairingMethods作为项目来实现我自己的组合框,但无法让它工作

有什么想法/建议吗


C

多亏了蒙珠的建议,我做到了以下几点

public class PairingComboBox : ComboBox
{
    private List<Type> _availableMethod = DerivedTypes.FindAllDerivedTypes<PairingMethod>();

    public PairingComboBox()
    {
        DataSource = DerivedTypes.FindAllDerivedTypes<PairingMethod>();
        DisplayMember = "Name";
    }
}

public static IPairingMethod CreateInstanceBinder
               (string pairingMethodName, ICollection<IPlayer> players)
{
         var t = Type.GetType(pairingMethodName + ",Pairings");
        return (PairingMethod)Activator.CreateInstance(t, players);
 }
公共类PairingComboBox:ComboBox
{
私有列表_availableMethod=DerivedTypes.FindAllDerivedTypes();
公共配对组合框()
{
DataSource=DerivedTypes.FindAllDerivedTypes();
DisplayMember=“Name”;
}
}
公共静态IPairingMethod CreateInstanceBinder
(字符串pairingMethodName,ICollection播放器)
{
var t=Type.GetType(pairingMethodName+“,Pairings”);
return(PairingMethod)Activator.CreateInstance(t,players);
}

当组合框更改时,我调用CreatenIstanceBuilder。从联盟传来球员。

1。请正确地格式化你的代码,缩进在这里到处都是。2.显示您的组合框代码,这是这里的重点。
“它使用类名作为项[…]我需要知道选择了哪个派生类”
-那不是组合框当前选择的值吗?现在还不清楚问题出在哪里。对不起,David,我可以从所选项目中获取索引。但是,将选定索引转换为派生类的干净方法是什么?@user7541312您将使用类名而不是索引。那就这样:啊,谢谢你,蒙珠