.net c#通用列表

ryoqjall  于 2023-04-22  发布在  .NET
关注(0)|答案(4)|浏览(110)

我正在使用通用列表将不同实体的数据填充到一组列表中,如下所示:

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

我需要将这些列表写入一个文件,我有一个util方法来使用反射获取属性等的值。
我想做的是:使用单一方法将它们写入文件,例如:

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

我该怎么做?
我希望能够拨打:

writeToFile(bars);
writeToFile(foos);
xggvc2p6

xggvc2p61#

void writeToFile<T>(List<T> list)
{
    // Do the writing
}
okxuctiv

okxuctiv2#

可以使用泛型允许调用方指定列表包含的预期类型。

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

snz8szmq3#

可能是...

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));

......或者别的什么......你明白我的意思。

798qvoo8

798qvoo84#

你应该看看serialization的主题。有关于处理泛型类型的somearticles

相关问题