2014-04-07 70 views
-1

我有一个表如何避免长时间开关

ID Name 
1 New York 
2 California 
3 Maine 
4 Ohio 
5 Washington 

我能找到基于ID的匹配,用户会通过。

但是我希望能够调用一个WPF视图基于通过的ID。

我该如何避免编写一个长开关语句?

+0

不知道你的数据结构那是不可能回答 – thumbmunkeys

+0

怎么办你的意思是基于ID调用WPF视图?这完全是另一种观点吗?或者你可以将该视图的组合委托给视图本身,并将该ID作为参数传递给它? –

+2

使用静态**地图/字典**。在数据库中添加**第二列**。使用该元数据的属性**来装饰您的**视图(并带有一点反思)。使用一些关于命名**的约定。使用多个** IFs **开关intead。 **您尝试过?** –

回答

1

不知道我理解你的问题,但如果你需要能够调用特定城市的特定视图,那么可能最容易将这些信息存储在数据中。您可以在城市表格中添加一列,或者创建另一张表格以加入,以确定城市是否应该获得自定义视图。从那里,使用反射旋转你需要的视图。

+0

我使用ID和视图名创建交叉表。因此,如果未来视图发生变化,它将是一个简单的数据库更改。 –

0

做一个解释

Dictionary<int,View> dictionary=new Dictionary<int,View>(); 
dictionary.Add(1,new NewYorkView()); 
dictionary.Add(2,new California()); 

或只是一个列表

Type[] viewTypes=new Type[null,typeof(NewYorkView),typeof(CaliforniaView),,,,,]; 

,当你收到ID:

dictionary[ID].Show();