4
我想將一種方法轉換爲使用泛型。 這是目前硬編碼到這些類型:轉換C#方法以使用引用屬性內的泛型
- 在數據上下文的分部類
DataContext.Document
和object
DataContext.Documents
也繼承了這一部分類和Linq.Table<Document>
Import.Document
從一個自定義的類繼承繼承ImportObject
原始方法:
public void ProcessDocuments(Delegate method, params object[] args)
{
using (DataContext dc = new DataContext())
{
dc.ObjectTrackingEnabled = false;
// Map from DataContext object to ImportObject
Mapper.CreateMap<Document, Import.Document>();
// Loop through DataContext objects
foreach (Document d in dc.Documents)
{
Import.Document doc = Mapper.Map<Document, Import.Document>(d);
args[0] = doc;
method.DynamicInvoke(args);
}
}
}
嘗試方法:
public void ProcessImportObjects<TSource, TDestination>
(Action<TDestination, ImportDataSource, int> processMethod, ImportDataSource importSource, int resultId)
{
using (DataContext dc = new DataContext())
{
dc.ObjectTrackingEnabled = false;
Mapper.CreateMap<TSource, TDestination>();
foreach (TSource d in dc.Documents) // PROBLEM: Hard-coded reference to property on DataContext
{
TDestination doc = Mapper.Map<TSource, TDestination>(d);
processMethod(doc, importSource, resultId);
}
}
}
(這裏,TDestination
應ImportObject
類型,但我不知道怎麼表達)
由於在評論中所示, foreach需要引用DataContext上的一個屬性,該屬性是IEnumerable<TSource>
。 這是否意味着我需要將DataContext作爲參數傳遞,還是有更好的方法?