【发布时间】:2014-01-03 23:41:53
【问题描述】:
我有一个 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 类都非常相似。
【问题讨论】:
-
想想接口和工厂。
-
@RoyDictus 我知道如何实现工厂以返回正确的对象,但我将如何使用它来调用该方法?你能指出我正确的方向吗?
-
你不使用工厂调用方法,你只定义一个接口,比如说
IFileType,它定义了所有的Action,然后当你有一个IFileType的实例时,你可以调用它的Add方法等 -
@RoyDictus 是的,但我想完全摆脱 if/else 语句。但我认为答案是行动工厂?
标签: c# wpf generics reflection architecture