Я хочу заполнить элементы в выпадающем списке, каждый из которых имеет свое поведение.
Да, я знаю, что могу просто создать 3 класса, основанных на базовом классе. Но мой вопрос вроде «есть ли другой путь» и «что возможно».
В Java можно сделать «new MyClass () {public void overriddenmethod () {...}}», но в C # мы не можем, не так ли?
Теперь я использую лямбду, чтобы определить метод на лету, но проблема в том, что позже я хочу новый XxxFormatter () в качестве переменной экземпляра этого объекта. Поскольку XxxFormatters не имеют общего базового класса, я не могу поместить их как одно поле в классе SerializingHelper.
Есть ли у вас идеи?
public delegate void SerializingHandler(Stream s, object o);
class SerializingHelper
{
public string Name { get; set; }
public SerializingHandler Serializer { get; set; }
}
comboFormat.Items.AddRange(new object[]
{
new SerializingHelper{ Name = "Binary",
Serializer = (s,o)=>new BinaryFormatter().Serialize(s,o),
new SerializingHelper{ Name = "Soap",
Serializer = (s,o)=>new SoapFormatter().Serialize(s,o),
new SerializingHelper{ Name = "Xml",
Serializer = (s,o)=>new XmlSerializer(typeof(KontaktpartnerData), new Type[]
{typeof(ArrayList), typeof(KontaktPartner)}).Serialize(s,o), }
});