我有两组Url,一个用于PreProd,一个用于Prod。每个Url都有几个API节点。而不是硬编码这些API节点,我保持他们在一个枚举从字符串方法名称调用方法
事情是这样的:
//Prod
private enum Prod
{
precheckorder,
submitresubmit,
creditInquiry,
createupdateorder,
confirmorder,
getorderstatus,
cancelorder,
}
/// <summary>
/// Gets the relative URL.
/// </summary>
/// <param name="u">The u.</param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
private static string GetRelativeUrl(Prod u)
{
switch (u)
{
case Prod.precheckorder:
return "https://contesa.tex.com/api/precheckorder";
case Prod.submitresubmit:
return "https://contesa.tex.com/api/submitresubmit";
case Prod.creditInquiry:
return "https://contesa.tex.com/api/creditinquiry";
case Prod.createupdateorder:
return "https://contesa.tex.com/api/createupdateorder";
case Prod.confirmorder:
return "https://contesa.tex.com/api/confirmorder";
case Prod.getorderstatus:
return "https://contesa.tex.com/api/getorderstatus";
case Prod.cancelorder:
return "https://contesa.tex.com/api/cancelorder";
default:
// Handle bad URL, possibly throw
throw new Exception();
}
}
我们使用环境变量来存储环境的名字和那是什么决定了要使用的API集。
理想情况下,我想要一个方法,我传入我的环境和API名称,它将返回API Url。
喜欢的东西
GettexApiUrlBasedOnEnvironment("Dev", "precheckorder");
和响应将是
"https://contoso.tex.com/api/precheckorder"
任何意见/建议,我们将不胜感激。 TIA
目前尚不清楚你想要做什么。如果你只是想要返回一个方法,那么只需要两个带重载的方法,其中输入参数是枚举类型并执行方法内的逻辑(例如'string MyMethod(EnumType1 en)'和'string MyMethod(EnumType2 EN)“)。另外,我在您展示的Gettex ...方法中看到“Dev”一词,但在问题的其他地方没有。你只是试图根据你是否在release/debug模式下运行来改变结果吗?如果是这样,只需使用'#if DEBUG'并在程序加载时放入一些逻辑。什么是'反射'标签? – beeker