c# - 将列表<baseclass> 转换为列表<衍生类>

标签 c# .net casting generic-list

我有许多类都继承自基类 - 事实上,它只是一个接口(interface)的包装器,以允许序列化:

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 或其他派生类之一。

我需要将列表转换/转换为列表,因为我试图将列表绑定(bind)到网格,但由于网格只能看到基类,因此无法找到任何属性。在运行时.NET 知道“真实”类型,只是在编译时我无法将其转换。这是因为它根本不可能 - 如果每个派生类上没有一些构造函数来进行转换?

我在这里搜索过,确实还有其他类似的问题,但我对这些解决方案没有任何运气。

一如既往地感谢任何帮助.. 谢谢

最佳答案

你试过吗myList.Cast<BaseClass>

关于c# - 将列表<baseclass> 转换为列表<衍生类>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16833764/

相关文章:

c# - 在架构定义中找不到类型名称

.net - 存在哪些 ASP.Net 替代框架?

c - %d 是 C 中的类型转换吗?

C# 将字节数组转换为 int 总是相同的数字

c# - 通过 PHP 与 .net 通信

c# - 将多个字典的值合并到一个列表中

c# - Object.GetType 也可以用于后期绑定(bind)吗?

c# - nhibernate 从 Fluent 映射到通过代码映射

Java - 如何转义打印控制字符?

go - 为了将 io.Reader 的内容作为字符串指针返回,我可以复制数据的最小次数是多少?