2013-12-16 4 views
0

У меня есть приложение WPF, в котором есть две поля со списком, одна с тем, что я называю FileType, и один с Actions (добавление, изменение, удаление и т. Д.). Каждый FileType имеет соответствующий класс. То, что я пытаюсь сделать, это, например, если FileTypeA выбран и действие Add, то я хочу сделать что-то вдоль этих линий:Класс и метод вызова из двух строк

void myMethod(string FileType, string Action) 
{ 
    //using reflection find class from the FileType string, and call method Action 
    var x = new FileTypeA(); 
    x.Add(); 
} 

если пользователь выбирает FileTypeB и Delete затем созданный объект и метод соответственно, изменится. Я думаю, что это возможно с помощью рефлексии, но я пытаюсь выяснить, есть ли лучший способ использовать, возможно, общий класс? так как все эти классы FileType очень похожи.

+0

Подумайте об интерфейсах и фабриках. –

+0

@RoyDictus Я знаю, как реализовать фабрику, чтобы вернуть правильный объект, но как использовать его для вызова метода? можете ли вы указать мне в правильном направлении? – SOfanatic

+0

вы не используете фабрику для вызова метода, вы просто определяете интерфейс, например 'IFileType', который определяет все действия, а затем, когда у вас есть экземпляр' IFileType', вы можете вызвать его метод 'Add', и т. д. –

ответ

0

попытайтесь создать интерфейс IFileType с базовыми методами Добавить, удалить, сохранить Внедрить этот интерфейс во всех классах fileTypes, например DocFile, PdfFile и т. Д.

Привяжите список к ComboBox и используйте его выбранный объект Item как литой его как IFileType и вызовите его метод через интерфейс (Удалить/Сохранить), не делая никакого отражения.

Я бы рекомендовал использовать шаблон MVVM, чтобы вы могли легко создавать разделение слоя и иметь преимущества ООП.

+0

Да, я уже использую MVVM. Но вы говорите, что можете выставить выбранный элемент со списком непосредственно в объект? – SOfanatic

+0

yes Вы можете отбросить выбранный объект к объекту класса и указать его метод через его интерфейс. –

+0

проверить эту тему по связанным вопросам http://stackoverflow.com/questions/663881/wpf-mvvm-combobox-selecteditem-or-selectedvalue-not-working –

0

Если вы хотите вызвать определенное действие для элемента в соответствии с выбранным параметром из ComboBox, ознакомьтесь с delegates. Затем используйте подход привязки набора опций (с включенным делегатом) к ComboBox

Смежные вопросы