我经常必须从我的代码中将各种列表<>导出到外部文件。为了以通用的方式来完成它,我想写一个函数,它只是取得我变量的名称,然后根据该类中的字段进行导出。获取参数对象的名称
我工作得很好,我唯一无法弄清楚的是我想要导出的变量的名称。我可以获得班级的类型,但这不是我需要的。我可以得到我放入的变量的名称,但那不是我所需要的。
下面你会发现我正在使用的代码:
public class testClass
{
public string firstName {get; set;}
public string lastName {get; set;}
}
private void test()
{
testClass nameOfMyTestClass = new testClass();
// DATA ADDED TO nameOfMyTestClass
...
exportClass(nameOfMyTestClass);
}
public void exportClass(object selectedClass)
{
string objectName = selectedClass.name;
string output = string.Empty;
// GET THE DATA FROM THE SETTINGS
PropertyInfo[] properties = selectedClass.GetType().GetProperties();
foreach (var p in properties)
{
output += "[" + p.Name + "] " + p.GetValue(selectedClass) + Environment.NewLine;
}
// WRITE THE FILE
File.WriteAllText(basePath + @"DATA\" + objectName + ".txt", output, Encoding.UTF8);
}
所以我传递变量nameOfMyTestClass作为对象插入方法exportClass因为我希望能够用这个多种不同类。
在该方法中,我想使用我添加的变量的名称作为我的文件的名称:例如nameOfMyTestClass.txt
我可以通过使用GetType()获得类本身,或者我可以使用ToString(),但是这给了我NAMESPACE.Form1 + testClass作为结果,但我无法找到一种方法来获得实际变量的名称。
有没有人有一个想法,我可以做到这一点?
感谢
对象没有名称。在保存对该对象的引用的方法之外的局部变量的名称决不会被该对象知道。你也需要传递这个名字,这是没有办法的。 –
我完全同意@LasseVågsætherKarlsen。最干净的解决方案是有一个包装或对象,或使您的对象是可命名的。虽然洛里斯的答案也是可能的。 – Christian