我經常必須從我的代碼中將各種列表<>導出到外部文件。爲了以通用的方式來完成它,我想寫一個函數,它只是取得我變量的名稱,然後根據該類中的字段進行導出。獲取參數對象的名稱
我工作得很好,我唯一無法弄清楚的是我想要導出的變量的名稱。我可以獲得班級的類型,但這不是我需要的。我可以得到我放入的變量的名稱,但那不是我所需要的。
下面你會發現我正在使用的代碼:
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