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值时,会出现语法错误