簡體   English   中英

C#通用列表

[英]c# Generic List

我使用通用列表將不同實體的數據填充到列表集中,如下所示:

List<Foo> foos ..
List<Bar> bars ..

我需要將這些列表寫入文件,我確實有一個util方法來使用反射來獲取屬性等的值。

我想要做的是:使用一種方法將這些內容寫入文件,例如:

 void writeToFile(a generic list)
 {
  //Which i will write to file here.
 }

我怎樣才能做到這一點?

我希望能夠打電話給:

writeToFile(bars);
writeToFile(foos);
void writeToFile<T>(List<T> list)
{
    // Do the writing
}

您可以使用泛型來允許調用方指定列表包含的預期類型。

void writeToFile<T>(IList<T> list)
{
    ...
}

大概像...

private void WriteToFile<T>(
  IEnumerable<T> elementsToWrite,
  Func<T, string> convertElementToString) {
  foreach (var element in elementsToWrite)
  {
    var stringRepresentation = convertElementToString(element);
    // do whatever other list-stuff you need to do
  }
}

// called like so...
WriteToFile(listOfFoo, foo => foo.FP1 + ", " + foo.FP2 + " = " foo.FP3);
WriteToFile(listOfBar, bar => bar.BP1 +"/"+ bar.BP2 + "[@x='" + bar.BP3 + "']");

...或者您可以嘗試類似...

private void WriteToFile<T>(
  IEnumerable<T> elementsToWrite,
  Action<T, TextWriter> writeElement) {
  var writer = ...;

  foreach (var element in elementsToWrite)
  {
    // do whatever you do before you write an element
    writeElement(element, writer);
    // do whatever you do after you write an element
  }
}

// called like so...
WriteToFile(listOfFoo, (foo, writer) =>
  writer.Write("{0}, {1} = {2}", foo.FP1, foo.FP2, foo.FP3));
WriteToFile(listOfBar, (bar, writer) =>
  writer.Write("{0}/{1}[@x='{2}']", bar.BP1, bar.BP2, bar.BP3));

...或任何...您有主意。

您應該研究序列化主題。 還有就是有一些 文章在那里關於處理泛型類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM