我有一个抽象课
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。从联盟传球。