【发布时间】:2014-06-18 05:03:22
【问题描述】:
我有一个 BaseFilter 类和一些 BaseFilter 类的派生类。
1. List<base> list = getFilters();
2. foreach(Base filter in list){
3. var filterType = filter.GetType();
4. var filter1 = filter as filterType;
5. //DO SOME DERIVED CLASS OPERATION
6. }
我在代码第 3 行遇到错误。挑战是过滤器可以是任何派生类类型。有没有办法将过滤器对象类型转换为其实际的派生类?
我收到以下错误: 找不到类型或命名空间名称“filterType”(您是否缺少 using 指令或程序集引用?)
正确的做法应该是什么?
【问题讨论】:
-
参见:stackoverflow.com/questions/9005427/…、stackoverflow.com/questions/4975090/…、stackoverflow.com/questions/1165275/… - 尝试搜索“tag:C# cast type object”。 (考虑诸如接口或子类之类的主格类型 - 这就是 C# 所具有的。)
标签: c# casting polymorphism