在搜索电路板后,我无法找到解决问题的方法。
我写了以下代码,效果很好:
public static void CreateFile(this List<string> lines,File_attribute fa)
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(fa.OutpoutFolder+ fa.FileName ))
{
foreach (string line in lines)
{
file.WriteLine(line);
}
}
}
现在,我希望能够通过一个通用的对象集合来做到这一点。我希望每个房产都是“ToStringed”。这是我的代码的开头:
public static void CreateFile<T>(this List<T> lines, File_attribute fa)
{
List<string> mylist = new List<string>();
...............
...............
任何帮助都将受到高度赞赏。
答案 0 :(得分:2)
您可以将LINQ用于此
public static void CreateFile<T>(this List<T> lines, File_attribute fa)
{
List<string> mylist = lines.Select(x => x.ToString()).ToList();
...............
...............
答案 1 :(得分:1)
以下是使用string.Join
的可能替代方法:
public static void CreateFile<T>(this List<T> lines, File_attribute fa)
{
File.WriteAllText
(
Path.Combine(fa.OutpoutFolder, fa.FileName),
string.Join(Environment.NewLine, lines)
);
}
因此string.Join
会在内部调用Object.ToString()
!
答案 2 :(得分:1)
只需对每件商品使用ToString
,其余部分就可以保持不变:
public static void CreateFile<T>(this List<T> items, File_attribute fa)
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(fa.OutpoutFolder + fa.FileName))
{
foreach (T item in items)
file.WriteLine(item.ToString());
}
}
通过这种方式,对于一个庞大的列表,这将阻止您的应用程序在将任何内容写入磁盘之前分配大量内存。
答案 3 :(得分:0)
public static void CreateFile<T>(this List<T> lines)
{
List<string> mylist = new List<string>();
var props = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
foreach (var item in lines)
{
foreach (var prop in props)
{
var val = prop.GetValue(item);
// do what you want with val, you can call ToString() on it
}
}
}
答案 4 :(得分:0)
虽然所有内容都来自System.Object
,因而实现.ToString()
,但很容易将其视为调用者并在未覆盖.ToString()
的类型上使用它,然后输出public interface ILine {
string GetLineOutput();
}
对象类型而不是某些预期的消息。为了更好地控制,我强烈建议使用一个接口,然后将其用作方法的通用约束。
public static void CreateFile(this List<T> lines, File_attribute fa) where T : ILine
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(System.IO.Path.Combine(fa.OutpoutFolder, fa.FileName)))
{
foreach (ILine line in lines)
{
file.WriteLine(lin.GetLineOutput());
}
}
}
然后在你的班上。
System.IO.Path.Combine
一些附注
using
组合这些部分。dydx = tf.gradients([output_scalars[i] for i in range(0, NUM_CLASSES)], [input_cnn])[0])
为您的流做好!