我有一个非常密集的例程,我是客户,向我返回List<BaseType>
。除其他参数外,该例程还包含DateTime
,但返回的List<BaseType>
并未包含此信息:BaseType
没有DateTime
成员可以跟踪此信息。 (这是因为例程设计为仅在一个日期调用,在VBA中完成许多日期的循环。)
现在我需要有这个额外的日期信息,因为我想在一个List<BaseType>
中连接许多不同的List<BaseType>
(由不同的日期生成),我想要应用一些需要约会的处理 - 察觉。
因此,我实施了一个直接的DerivedType
课程BaseType
,并将此日期时间纳入其他信息。
我想知道什么是最佳(在性能方面,理想情况下没有副本)方式来转换&#34; List<BaseType>
到List<DerivedType>
,DerivedType
所有DateTime
成员的价值相同。
备注。我想同时将所有生成的List<DerivedType>
&#39}放在一个List<DerivedType>
中,我将不得不使用List
进行修剪的运作。这就是我为什么要坚持List
&#39>。
澄清编辑
上下文:在VBA中,我遍历了许多日期,对于每个日期,由于c#
dll,我生成了一个数组,最后,我在某处打印(在VBA中)所有这些数组。在c#中生成一个数组使用上述例程(我不能因为它依赖于遗留dll而改变):List<BaseType>
生成日期,并以日期相关的方式处理以生成数组。我想要做的是从VBA中删除日期循环并在c#中执行。作为&#34;治疗&#34;实际上取决于List<BaseType>
的列表性质,并且在日期,BaseType
会合并日期信息,我可以将所有List<BaseType>
连接到唯一的List<BaseType>
我将应用治疗,而不是按列表列出。但是BaseType
没有包含日期信息,所以我被卡住......这导致了这个问题。
答案 0 :(得分:0)
这是一种没有铸造的替代品。你仍然需要处理列表清单......
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
public class BaseClass
{
}
public class BaseClassList : List<BaseClass>
{
public DateTime CallDate { get; set; }
public BaseClassList(IEnumerable<BaseClass> elements, DateTime CallDate)
: base(elements)
{
this.CallDate = CallDate;
}
}
public static class BaseClassExtensions
{
public static DateTime Date(this BaseClass ext, BaseClassList bcl)
{
return bcl.CallDate;
}
}
class Program
{
public static List<BaseClass> Func(DateTime d)
{
BaseClass A = new BaseClass();
BaseClass B = new BaseClass();
return new List<BaseClass>() { A, B };
}
static void Main(string[] args)
{
DateTime d1 = new DateTime(2017, 5, 1);
DateTime d2 = new DateTime(2018, 5, 1);
List<DateTime> dates = new List<DateTime>() { d1, d2 };
List<BaseClassList> myList = new List<BaseClassList>();
foreach (DateTime d in dates)
myList.Add(new BaseClassList(Func(d), d));
foreach(var el in myList)
foreach (BaseClass bc in el)
Console.WriteLine(bc.Date(el));
}
}
}