【问题标题】:Access enum from Class object从 Class 对象访问枚举
【发布时间】:2012-07-19 11:24:25
【问题描述】:

我正在尝试开发一个可用于在 SQLite 中动态创建表/列的类;我创建了我的类如下:

public class NewColumns
{
    public string ClmName;

    public Types NewType { get; set; }

    public void SetName(string NewColumn)
    {
        ClmName = NewColumn;
    }
}

public enum Types
{
    INTEGER = 0,
    REAL = 1,
    NUMERIC = 2,
    TEXT = 3,
    BLOB = 4,
}

public static bool CreateTable(string DBPath, string TableName, params NewColumns ClumnName)
{
    bool succ = false;
    mDBcon.ConnectionString = "Data Source=" + DBPath + ".db3";
    mDBcon.Open();
    cmd = new SQLiteCommand(mDBcon);
    cmd.CommandText = "CREATE TABLE IF NOT EXISTS " + TableName + " (ISBN VARCHAR(15), Tag VARCHAR(15));";
    cmd.ExecuteNonQuery();
    return succ;
}

我想像这样将我的新值传递给类:

clsSqlite.CreateTable("test", "newTable", new clsSqlite.NewColumns { ClmName = "", NewType.INTEGER });

但上面代码中的“NewType”无法识别我的枚举值,如果我手动输入枚举值“INTEGER”,则会出现以下错误:

无效的初始化程序成员声明

提前感谢您的帮助。

问候,

【问题讨论】:

    标签: c# class object enums


    【解决方案1】:
    clsSqlite.CreateTable(
        "test", 
        "newTable", 
        new clsSqlite.NewColumns { ClmName = "", NewType = Types.INTEGER });
    

    NewType是你的属性名,枚举叫Types

    【讨论】:

    • 完美,我的愚蠢错误,一切正常。谢谢。我还有一个等式,如果您也能帮助我,我将不胜感激,要检索枚举值,我使用此方法:enumValue.ToString(),它工作正常,但安全吗?还是我应该使用不同的方法?
    • 我认为没关系.. 但这不会返回枚举的 value 而是它的 name
    【解决方案2】:

    将枚举移到类定义之外,你会没事的。

    您可以考虑为您的枚举使用除 Types 之外的其他名称,因为它可能会在将来让您和其他人感到困惑。

    并将您的变量更改为属性。

    【讨论】:

    • 感谢您的建议,一切正常,我也更改了类型的名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2018-12-18
    • 2011-12-09
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    相关资源
    最近更新 更多