実際には、それがどのように正しく呼び出されるかを正確に言うことさえできませんが、1 つのメソッドで変数/プロパティ/フィールドを割り当てることができるものが必要です。私は説明しようとします...私は次のコードを持っています:
txtBox.Text = SectionKeyName1; //this is string property of control or of any other type
if (!string.IsNullOrEmpty(SectionKeyName1))
{
string translation = Translator.Translate(SectionKeyName1);
if (!string.IsNullOrEmpty(translation))
{
txtBox.Text = translation;
}
}
stringField = SectionKeyName2; //this is class scope string field
if (!string.IsNullOrEmpty(SectionKeyName2))
{
string translation = Translator.Translate(SectionKeyName2);
if (!string.IsNullOrEmpty(translation))
{
stringField = translation;
}
}
stringVariable = SectionKeyName3; //this is method scope string variable
if (!string.IsNullOrEmpty(SectionKeyName3))
{
string translation = Translator.Translate(SectionKeyName3);
if (!string.IsNullOrEmpty(translation))
{
stringVariable = translation;
}
}
ご覧のとおり、このコードは、設定する「オブジェクト」と SectionKeyName を受け取る 1 つのメソッドにリファクタリングできます。したがって、次のようになります。
public void Translate(ref target, string SectionKeyName)
{
target = SectionKeyName;
if (!string.IsNullOrEmpty(SectionKeyName))
{
string translation = Translator.Translate(SectionKeyName);
if (!string.IsNullOrEmpty(translation))
{
target = translation;
}
}
}
BUT:プロパティをrefで渡すことができないため、texBox.Textを割り当てたい場合にそのメソッドを使用できません.... プロパティの解決策であるSOのトピックを見つけましたが、プロパティを解決して立ち往生しましたフィールド/変数で....
私のすべてのケースを処理する単一のメソッドを作成する方法を見つけるのを手伝ってください...
//This method will work to by varFieldProp = Translate(SectionKeyName, SectionKeyName), but would like to see how to do it with Lambda Expressions.
public string Translate(string SectionKeyName, string DefaultValue)
{
string res = DefaultValue; //this is string property of control or of any other type
if (!string.IsNullOrEmpty(SectionKeyName))
{
string translation = Translator.Translate(SectionKeyName);
if (!string.IsNullOrEmpty(translation))
{
res = translation;
}
}
return res;
}
ありがとうございました !!!