これらのすべての条件に同じパターンがある場合は、 この方法の重複を減らすための一般的な方法を思い付くアイデアはありますか?一般的なパターンここでは重複を減らすために簡略化しようとしています
public override Func<JObject, dynamic, string> version => (jobject, parameters) =>
{
bool hasValidObject = false;
if (jobject["Version1"] != null)
{
_radio.Version1 = new VersionInfo(jobject["Version1"].Value<string>());
hasValidObject = true;
}
if (jobject["Version2"] != null)
{
_radio.Version2 = new VersionInfo(jobject["Version2"].Value<string>());
hasValidObject = true;
}
if (jobject["Version3"] != null)
{
_radio.Version3 = new VersionInfo(jobject["Version3"].Value<string>());
hasValidObject = true;
}
if (jobject["Version4"] != null)
{
_radio.Version4 = new VersionInfo(jobject["Version4"].Value<string>());
hasValidObject = true;
}
if (jobject["Version6"] != null)
{
_radio.Version6 = new VersionInfo(jobject["Version6"].Value<string>());
hasValidObject = true;
}
if (hasValidObject)
{
return GenerateSuccess();
}
return GenerateUnsuccessful(try again.");
};
'_'で1つの' Version'オブジェクトを使用できますか?もしそうなら、forループを1から6まで持つことができ、 'jobject [" Version "+ i.ToString()]'のようなものを使ってこれらの値を取得/設定することができます。代わりに、リフレクションを使用して、あなたの 'i'に対応するプロパティを取得します。 – PoweredByOrange
はそれぞれ異なるバージョンです(ハードウェアバージョン、モバイルバージョン、テレビ版など) –
少なくともバージョンの作成を別のメソッドに移動すると、_radio.Version1 = GetVersion(jObject、nameof(_radio.Version1))となります。 'あなたが100バージョンを持っていない限り、そのような少しの利益の反映を避ける方がいいですが、とにかくクラスを再設計する必要があります。 – Evk