C# 如何使一个方法采用多个枚举类型,而不必一直强制转换
我有这些方法调用,还有更多,还有这个方法:C# 如何使一个方法采用多个枚举类型,而不必一直强制转换,c#,C#,我有这些方法调用,还有更多,还有这个方法: App.DB.UpdateSetting("TimeInterval", (int)Time.UserInput ); App.DB.UpdateSetting("ThemeColor", (int)Theme.Light ); public void UpdateSetting(string setting, int value, string text="" ) { lock (locker)
App.DB.UpdateSetting("TimeInterval", (int)Time.UserInput );
App.DB.UpdateSetting("ThemeColor", (int)Theme.Light );
public void UpdateSetting(string setting, int value, string text="" )
{
lock (locker)
{
db2.Execute("UPDATE Setting SET Value = ?, Text = ?" +
" WHERE SettingType = ?", value, text, setting);
}
}
我想做的是能够避免将所有这些设置键入(int)。有什么方法可以这样做吗?您可以使用
Enum
而不是int
。它允许您传递所需的任何枚举值。然后需要做的唯一更改是将枚举转换为方法中的int:
public void UpdateSetting(string setting, Enum value, string text = "")
{
var intValue = Convert.ToInt32(value);
lock (locker)
{
db2.Execute("UPDATE Setting SET Value = ?, Text = ?" +
" WHERE SettingType = ?", intValue, text, setting);
}
}
现在你可以这样称呼它:
App.DB.UpdateSetting("TimeInterval", Time.UserInput );
App.DB.UpdateSetting("ThemeColor", Theme.Light );
将
int-value
更改为Enum-value
?您可以编写一个T4模板,该模板可以自动生成代理或至少一个overload@DavidG这当然可以,但他必须在更新设置中添加Convert.ToInt32,否则他将结束编写ToString()的结果,但现在它是一个单一的转换,而不是许多:)@DavidG你能解释更多吗。当我更改为Enum值时,会出现语法错误