我有许多类都继承自基类 - 实际上它只是一个允许序列化的接口的包装器:
public abstract class VoucherRuleBase : IRule{
public abstract bool Save(int nodeID);
}
public class ActiveDateRule : VoucherRuleBase{
public DateTime ActiveDateRuleProperty{get;set;}
...etc
}
然后我有一个List<VoucherRuleBase>
,其中包含许多ActiveDateRule
个对象,或许多其他派生类。列表总是充满相同的类型,即。所有ActiveDateRules或其他派生类之一。
我需要将List转换/转换为List,因为我试图将列表绑定到网格,但由于网格只看到基类,因此无法找到任何属性。在运行时.NET意识到'真实'类型,只是在编译时我无法将其转换。这是因为它根本不可能 - 没有在每个派生类上有一些构造函数来进行转换吗?
我在这里搜索过,确实还有其他类似的问题,但我对这些解决方案没有任何好运..
任何帮助都很受欢迎.. 感谢
答案 0 :(得分:3)
您是否尝试过myList.Cast<BaseClass>
?
答案 1 :(得分:1)
尝试使用as
。
List<VoucherRuleBase> voucherRules = new List<VoucherRuleBase>();
var activeDateRules = voucherRules.Select(x => x as ActiveDateRule);
您没有以这种方式进行隐式转换,您可以使用Where
过滤 错误的 对象,并过滤不{{1 }}
null
答案 2 :(得分:0)
这里的baseClasses是基类的列表。 DerivedClass1是你的专业课程。
var derivedClasses = baseClasses.Where(item => item.GetType() == typeof(DerivedClass1)).ToList();