私は定期的にさまざまなリスト<を自分のコードから外部ファイルにエクスポートする必要があります。一般的なやりかたでそれを行うために、私は変数の名前を取得し、そのクラスのフィールドに従ってエクスポートする関数を作成したかったのです。パラメータオブジェクトの名前を取得する
私はそれをうまく使っていますが、私が理解できないことは、エクスポートしたい変数の名前だけです。私はクラスのタイプを得ることができますが、それは私が必要とするものではありません。私はそれを置く変数の名前を得ることができますが、それは私が必要なものではありません。
あなたは私が使用しているコードをご覧いただけます:私は別の複数のためにこれを使用できるようにするため
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);
}
は、だから私は、メソッドのexportClassにオブジェクトとして変数nameOfMyTestClassを渡していますクラス。
このメソッドの中で、私がファイルの名前として追加した変数の名前を使用したいと思います。 nameOfMyTestClass.txt
GetType()を使用してクラス自体を取得することも、ToString()を使用することもできますが、結果としてNAMESPACE.Form1 + testClassが返されますが、実際の変数の名前。
どのように私はこれを達成することができるアイデアはありますか?
おかげ
オブジェクトには名前がありません。そのオブジェクトへの参照を保持するメソッドのすぐ外側のローカル変数の名前は、そのオブジェクトに決して知られていません。名前を渡す必要があります。周りには道がありません。 –
私は@LasseVågsætherカールセンと完全に同意します。最もクリーンな解決策は、ラッパーまたはオブジェクトを持つか、オブジェクトに名前を付けることです。ロリスの答えも可能ですが。 – Christian