3

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();

これについてどうすればいいですか?前もって感謝します。

4

1 に答える 1

10

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)
于 2012-12-03T23:20:34.267 に答える