我有一个抽象课

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();
    }

}


现在,我已经尝试根据从上述基类派生的所有类型创建一个组合框。我创建了组合框,它使用类名作为项目,但是当触发组合框更改事件时,我需要知道选择了哪个派生类。然后,我可以创建该类的实例,以生成配对。

我尝试使用PairingMethods作为项目实现自己的组合框,但无法使其正常工作。

有什么想法/建议吗?

C

最佳答案

感谢Mong Zhus的建议,我做了以下工作

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);
 }


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

07-28 02:43
查看更多