2017-03-23 11 views
1

これらのすべての条件に同じパターンがある場合は、この方法で重複を減らすための一般的な方法を思いつきますか?ここでは重複を減らすために簡略化しようとしています(共通パターン)

場合によってはすべてのバージョンが必要な場合もあり、特定のバージョンのみを必要とする場合もあります。

私はスイッチケースを試しました。

public override Func<JObject, dynamic, string> VersionMethod => (jobject, parameters) =>{ 
     bool hasValidObject = false; 

     if (jobject["swVersion"] != null) 
     { 
      _livetv.SoftwareVersion = new VersionInfo(jobject["swVersion"].Value<string>()); 
      hasValidObject = true; 
     } 

     if (jobject["hwVersion"] != null) 
     { 
      _livetv.HardwareVersion = new VersionInfo(jobject["hwVersion"].Value<string>()); 
      hasValidObject = true; 
     } 

     if (jobject["ltvVersion"] != null) 
     { 
      _livetv.LTV2Version = new VersionInfo(jobject["ltvVersion"].Value<string>()); 
      hasValidObject = true; 
     } 

     if (jobject["ltv3Version"] != null) 
     { 
      _livetv.LTV3Version = new VersionInfo(jobject["ltv3Version"].Value<string>()); 
      hasValidObject = true; 
     } 

     if (jobject["cricVersion"] != null) 
     { 
      _livetv.KAVersion = new VersionInfo(jobject["cricVersion"].Value<string>()); 
      hasValidObject = true; 
     } 

     if (jobject["bbVersion"] != null) 
     { 
      _livetv.BasebandVersion = new VersionInfo(jobject["bbVersion"].Value<string>()); 
      hasValidObject = true; 
     } 

     if (hasValidObject) 
     { 
      return GenerateSuccessful(); 
     } 

     return GenerateUnsuccessful(
      "Unable to parse version from request, try again."); 
    }; 
+0

それは、これをコードレビュースタック交換に投稿すると良いでしょう。そこの応答。 –

答えて

0

:このようにそれを呼び出すその後

public VersionInfo GetVersionInfo(JObject jobject, string jObjectField, ref bool found) 
    { 
     if(jobject[jObjectField] != null) 
     { 
      _livetv.SoftwareVersion = new VersionInfo(jobject[jObjectField].Value<string>()); 
      found = true; 
     } 
     else 
     { 
      return null; 
     } 
    } 

private VersionInfo GetVersionInfo(JToken token) 
{ 
    if (token != null) 
     return new VersionInfo(token.Value<string>()); 
    else 
     return null; 
} 


public override Func<JObject, dynamic, string> VersionMethod => (jobject, parameters) => 
{ 
    bool hasValidObject = false; 

    hasValidObject |= (_livetv.SoftwareVersion = GetVersionInfo(jobject["swVersion"])) != null; 
    hasValidObject |= (_livetv.HardwareVersion = GetVersionInfo(jobject["hwVersion"])) != null; 
    hasValidObject |= (_livetv.LTV2Version = GetVersionInfo(jobject["ltvVersion"])) != null; 
    hasValidObject |= (_livetv.LTV3Version = GetVersionInfo(jobject["ltv3Version"])) != null; 

    // <<<snip>>> 

    if (hasValidObject) 
     return GenerateSuccessful(); 
    else 
     return GenerateUnsuccessful(
      "Unable to parse version from request, try again."); 

} 
0

私はこのような方法で作成したい:私はのような何かをしようとするだろう

public Func<JObject, dynamic, string> VersionMethod = (jobject, parameters) => 
    { 
     bool hasValidObject = false; 

     _livetv.SoftwareVersion = GetVersionInfo(jobject, "swVersion", ref hasValidObject); 
     _livetv.HardwareVersion = GetVersionInfo(jobject, "hwVersion", ref hasValidObject); 
     _livetv.LTV2Version = GetVersionInfo(jobject, "ltvVersion", ref hasValidObject); 
     _livetv.LTV3Version = GetVersionInfo(jobject, "ltv3Version", ref hasValidObject); 
     _ivetv.KAVersion = GetVersionInfo(jobject, "cricVersion", ref hasValidObject); 
     _livetv.BasebandVersion = GetVersionInfo(jobject, "bbVersion", ref hasValidObject); 

     if (hasValidObject) 
     { 
      return GenerateSuccessful(); 
     } 

     return GenerateUnsuccessful(
      "Unable to parse version from request, try again."); 
    }; 
関連する問題