c#通用列表

c#通用列表,c#,.net,generics,list,methods,C#,.net,Generics,List,Methods,我使用通用列表将不同实体的数据填充到一组列表中,如下所示: List<Foo> foos .. List<Bar> bars .. 我该怎么做 我想打电话: writeToFile(bars); writeToFile(foos); void writeToFile(列表) { //写作 } 无效写入文件(列表) { //写作 } 您应该深入研究的主题是。关于处理泛型类型有很多不同的方法。您应该研究的主题是。关于处理泛型类型有很多问题。您可以使用泛型来允许调用方指定列

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

List<Foo> foos ..
List<Bar> bars ..
我该怎么做

我想打电话:

writeToFile(bars);
writeToFile(foos);
void writeToFile(列表)
{
//写作
}
无效写入文件(列表)
{
//写作
}

您应该深入研究的主题是。关于处理泛型类型有很多不同的方法。

您应该研究的主题是。关于处理泛型类型有很多问题。

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

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

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

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

可能类似于

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));
private void WriteToFile(
IEnumerable elementsToWrite,
Func convertElementToString){
foreach(elementsToWrite中的var元素)
{
var stringRepresentation=convertElementToString(元素);
//做任何你需要做的事情
}
}
//像这样叫。。。
写文件(listofoo,foo=>foo.FP1+,“+foo.FP2+”=“foo.FP3”);
WriteToFile(listOfBar,bar=>bar.BP1+“/”+bar.BP2+“[@x='”+bar.BP3+“]”);
…或者你可以试试像

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));
private void WriteToFile(
IEnumerable elementsToWrite,
动作(写入元素){
var writer=。。。;
foreach(elementsToWrite中的var元素)
{
//在编写元素之前,请执行任何操作
writeElement(元素、编写器);
//在编写元素之后,执行任何操作
}
}
//像这样叫。。。
WriteToFile(listofoo,(foo,writer)=>
Write(“{0},{1}={2}”,foo.FP1,foo.FP2,foo.FP3));
WriteToFile(listOfBar,(条,写入器)=>
Write(“{0}/{1}[@x='{2}']”,bar.BP1,bar.BP2,bar.BP3));

…或者别的什么。。。你明白了。

可能是

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));
private void WriteToFile(
IEnumerable elementsToWrite,
Func convertElementToString){
foreach(elementsToWrite中的var元素)
{
var stringRepresentation=convertElementToString(元素);
//做任何你需要做的事情
}
}
//像这样叫。。。
写文件(listofoo,foo=>foo.FP1+,“+foo.FP2+”=“foo.FP3”);
WriteToFile(listOfBar,bar=>bar.BP1+“/”+bar.BP2+“[@x='”+bar.BP3+“]”);
…或者你可以试试像

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));
private void WriteToFile(
IEnumerable elementsToWrite,
动作(写入元素){
var writer=。。。;
foreach(elementsToWrite中的var元素)
{
//在编写元素之前,请执行任何操作
writeElement(元素、编写器);
//在编写元素之后,执行任何操作
}
}
//像这样叫。。。
WriteToFile(listofoo,(foo,writer)=>
Write(“{0},{1}={2}”,foo.FP1,foo.FP2,foo.FP3));
WriteToFile(listOfBar,(条,写入器)=>
Write(“{0}/{1}[@x='{2}']”,bar.BP1,bar.BP2,bar.BP3));

…或者别的什么。。。你明白了。

嗯,这就是你加载一个问题而暂时不回答的结果——雅各布先到了那里。嗯,这就是加载一个问题而暂时不回答的结果——雅各布先到了那里。