C# 在这里,我试图简化它以减少重复(通用模式)
如果以下方法中的所有这些条件都具有相似的模式,有没有想法想出一种通用方法来减少此方法中的重复 有些情况下,我们需要所有的版本,有些情况下,我们只需要特定的版本 我试过开关箱C# 在这里,我试图简化它以减少重复(通用模式),c#,c#-4.0,c#-3.0,C#,C# 4.0,C# 3.0,如果以下方法中的所有这些条件都具有相似的模式,有没有想法想出一种通用方法来减少此方法中的重复 有些情况下,我们需要所有的版本,有些情况下,我们只需要特定的版本 我试过开关箱 public override Func<JObject, dynamic, string> VersionMethod => (jobject, parameters) =>{ bool hasValidObject = false; if (jobject["sw
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.");
};
public override Func VersionMethod=>(作业对象,参数)=>{
bool hasValidObject=false;
if(jobject[“swVersion”]!=null)
{
_livetv.SoftwareVersion=新版本信息(jobject[“swVersion”].Value());
hasValidObject=true;
}
if(jobject[“hwVersion”]!=null)
{
_livetv.HardwareVersion=新版本信息(jobject[“hwVersion”].Value());
hasValidObject=true;
}
if(jobject[“ltvVersion”]!=null)
{
_livetv.LTV2Version=新版本信息(jobject[“ltvVersion”].Value());
hasValidObject=true;
}
如果(作业对象[“ltv3Version”]!=null)
{
_livetv.LTV3Version=新版本信息(jobject[“LTV3Version”].Value());
hasValidObject=true;
}
如果(jobject[“cricVersion”]!=null)
{
_livetv.KAVersion=新版本信息(jobject[“cricVersion”].Value());
hasValidObject=true;
}
if(jobject[“bbVersion”]!=null)
{
_livetv.BasebandVersion=新版本信息(jobject[“bbVersion”].Value());
hasValidObject=true;
}
if(hasValidObject)
{
return generateSuccesful();
}
返回生成器未成功(
“无法分析请求中的版本,请重试。”);
};
我会创建一个类似这样的方法:
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;
}
}
public VersionInfo GetVersionInfo(JObject-JObject,string-jObjectField,ref-bool-found)
{
if(jobject[jObjectField]!=null)
{
_livetv.SoftwareVersion=新版本信息(jobject[jObjectField].Value());
发现=真;
}
其他的
{
返回null;
}
}
那么就这样称呼它:
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.");
};
public Func VersionMethod=(作业对象,参数)=>
{
bool hasValidObject=false;
_livetv.SoftwareVersion=GetVersionInfo(作业对象,“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(作业对象,“cricVersion”,参考hasValidObject);
_livetv.BasebandVersion=GetVersionInfo(作业对象,“bbVersion”,参考hasValidObject);
if(hasValidObject)
{
return generateSuccesful();
}
返回生成器未成功(
“无法分析请求中的版本,请重试。”);
};
我会创建一个类似这样的方法:
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;
}
}
public VersionInfo GetVersionInfo(JObject-JObject,string-jObjectField,ref-bool-found)
{
if(jobject[jObjectField]!=null)
{
_livetv.SoftwareVersion=新版本信息(jobject[jObjectField].Value());
发现=真;
}
其他的
{
返回null;
}
}
那么就这样称呼它:
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.");
};
public Func VersionMethod=(作业对象,参数)=>
{
bool hasValidObject=false;
_livetv.SoftwareVersion=GetVersionInfo(作业对象,“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(作业对象,“cricVersion”,参考hasValidObject);
_livetv.BasebandVersion=GetVersionInfo(作业对象,“bbVersion”,参考hasValidObject);
if(hasValidObject)
{
return generateSuccesful();
}
返回生成器未成功(
“无法分析请求中的版本,请重试。”);
};
我会尝试以下方法:
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.");
}
private VersionInfo GetVersionInfo(JToken令牌)
{
if(令牌!=null)
返回新版本信息(token.Value());
其他的
返回null;
}
public override Func VersionMethod=>(作业对象,参数)=>
{
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;
//
if(hasValidObject)
return generateSuccesful();
其他的
返回生成器未成功(
“无法分析请求中的版本,请重试。”);
}
我会尝试以下方法:
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.");
}
private VersionInfo GetVersionInfo(JToken令牌)
{
if(令牌!=null)
返回新版本信息(token.Value());
其他的
返回null;
}
public override Func VersionMethod=>(作业对象,参数)=>
{
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;
//
if(hasValidObject)
return generateSuccesful();
其他的
返回生成器未成功(
“乌纳