如何在If语句中评估Enum?

时间:2012-12-03 23:16:01

标签: c# if-statement enums evaluate

我第一次尝试将Enum实现到我的代码中。我有一个简单的自定义类,如下所示:

public class Application
{
    //Properties
    public string AppID { get; set; }
    public string AppName { get; set; }
    public string AppVer { get; set; }
    public enum AppInstallType { msi, exe }
    public string AppInstallArgs { get; set; }
    public string AppInstallerLocation { get; set; }
}

我在该类中有一个名为Install()的方法,如下所示:

    public void Install()
    {
        if (AppInstallType.exe)
        {
            ProcessStartInfo procInfo = new ProcessStartInfo("cmd.exe");
            procInfo.Arguments = "/c msiexec.exe /i " + AppInstallerLocation + " " + AppInstallArgs; ;
            procInfo.WindowStyle = ProcessWindowStyle.Normal;

            Process proc = Process.Start(procInfo);
            proc.WaitForExit();
        }
        else
        {
            ProcessStartInfo procInfo = new ProcessStartInfo("cmd.exe");
            procInfo.Arguments = "/c " + AppInstallerLocation + " " + AppInstallArgs;
            procInfo.WindowStyle = ProcessWindowStyle.Normal;

            Process proc = Process.Start(procInfo);
            proc.WaitForExit();
        }
    }

当AppInstallType是一个字符串时,我的Install方法开头的If语句工作正常(AppInstallType =“msi”)。当我将AppInstallType更改为Enum时,我似乎无法计算出if语句的语法。

我想避免必须将任何参数传递给Install()方法,如果可能的话。能够通过调用Application对象上的Install()方法安装应用程序会很高兴,如下所示:

Application app1 = new Application;
app1.AppInstallType = msi;
app1.Install();

我该怎么办呢?提前谢谢。

1 个答案:

答案 0 :(得分:9)

您尚未声明Enum的实例,您只是声明了它。

你需要

    public enum AppInstallType { msi, exe }

public class Application
{
    //Properties
    public string AppID { get; set; }
    public string AppName { get; set; }
    public string AppVer { get; set; }
    public string AppInstallArgs { get; set; }
    public AppInstallType InstallType;
    public string AppInstallerLocation { get; set; }
}

if(InstallType == AppInstallType.msi)