相关疑难解决方法(0)

Enum.Parse无法转换字符串

我正在尝试将一些AppSettings加载到一个对象中.设置如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Logging_default_path" value="C:\Temp" />
    <add key="Logging_max_file_size" value="10485760" />
    <add key="Logging_levels" value="Error,Warning,Info"/>
    <add key="Logging_filename" value="RobinsonLog" />
  </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Logging_levels 表示由设置允许几个枚举值.我正在尝试使用以下代码将这些加载到我的对象中:

Level = (LogLevel)Enum.Parse(typeof(LogLevel), settings["Logging_levels"]);
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我只返回LogLevel.Info,而不是Loglevel.Error |的值 LogLevel.Warning | LogLevel.Info.枚举定义如下:

[Flags]
public enum LogLevel
{
    Error = 0x0,
    Warning = 0x1,
    Info = 0x2,
    Debug = 0x3,
    Performance = 0x4
}
Run Code Online (Sandbox Code Playgroud)

通过以十六进制定义值,我错了吗?还是我错过了别的什么?

.net c# enums parsing

5
推荐指数
1
解决办法
1834
查看次数

如何将 EnumConverter 与 CsvHelper 一起使用

我正在使用CsvHelper将一个类序列化为 csv 文件 - 直到这里一切正常。

现在我正在尝试找到一种方法将类的枚举属性转换为它们在 csv 中的 int 值,以便稍后可以使用 CSV 进行批量插入。

我在 CsvHelper 中发现了 EnumConverter 类,但我无法弄清楚如何正确使用它,因为我所有的尝试都失败了。

这是我的映射类代码

 public sealed class MyMapping : CsvClassMap<TradingCalendarException>
    {
        public MyMapping()
        {
            EnumConverter enumConverter = new EnumConverter(typeof(CalendarExceptionEntityType));

            Map(m => m.ExceptionEntityType).Index(0).Name("EXCEPTION_ENTITY_TYPE").TypeConverter(enumConverter);
            Map(m => m.ExceptionEntityIdentifier).Index(1).Name("EXCEPTION_ENTITY_IDENTIFIER");
            Map(m => m.OptionType).Index(2).Name("OPTION_TYPE");
            Map(m => m.StartDatetime).Index(3).Name("EXCEPTION_START_DATETIME");
            Map(m => m.EndDatetime).Index(4).Name("EXCEPTION_END_DATETIME");
            Map(m => m.DataSourceType).Index(5).Name("DATA_SOURCE_TYPE");
            Map(m => m.Description).Index(6).Name("DESCRIPTION");
        }
    }
Run Code Online (Sandbox Code Playgroud)

和写作部分

using (StreamWriter file = new StreamWriter(filePath, false, Encoding.UTF8))
        {
            CsvWriter writer = new CsvWriter(file);
            MyMapping mapping = new MyMapping();
            writer.Configuration.RegisterClassMap(mapping);

            writer.WriteRecords(calendarExceptionList); …
Run Code Online (Sandbox Code Playgroud)

c# csv enums converters csvhelper

5
推荐指数
1
解决办法
7100
查看次数

如何在(字符串,标志列表,带标志的枚举)之间转换枚举?

如何从枚举转换为字符串,反之亦然?

考虑到枚举可以包含多个标志的情况,如何获得枚举包含的所有标志的列表?

c# enums parsing

5
推荐指数
1
解决办法
2283
查看次数

从String转换为Enum返回在WPF中无效的强制转换

我试图从WPF组合框选择值转换为枚举器它在运行时返回无效的强制转换,否则字符串和枚举名称匹配我的代码是

Siren.PfundMemberWebServices.Emirates EM = (Siren.PfundMemberWebServices.Emirates)cmbemirate.SelectedValue
Run Code Online (Sandbox Code Playgroud)

.net c# wpf enums

4
推荐指数
1
解决办法
520
查看次数

如何在类实例中调用常用函数?

假设我有两个类:

class Batman
{
    public void Robin(){...}
    public void Jump(){...}
}

class Superman
{
    public void Kryptonie(){...}
    public void Jump(){...}
}
Run Code Online (Sandbox Code Playgroud)

现在,我有一个这样的类的实例:

public object Crossover()
{
     var batman = new Batman();
     var superman = new Superman();

     return superman;
}
Run Code Online (Sandbox Code Playgroud)

我不知道Crossover将返回哪个类的实例,它可能是蝙蝠侠或超人.

var someVariableName = Crossover(); //I don't know if this contains an instance of Superman or Batman;

//I do know that no matter which class instance is returned, it will always contain a function named Jump which i want to trigger: …
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
1
解决办法
549
查看次数

严格将字符串解析为枚举的最佳方法是什么?

假设我有一个枚举:

public enum MyEnum
{
    OptionOne = 0,
    OptionTwo = 2,
    OptionThree = 4
}
Run Code Online (Sandbox Code Playgroud)

就像我在C#中如何将字符串转换为枚举一样?问题,我从字符串解析枚举,使用Enum.Parse方法:

public class Enumer
{
    public static MyEnum? ParseEnum(string input)
    {
        try
        {
            return (MyEnum) Enum.Parse(typeof (MyEnum), input);
        }
        catch (ArgumentException)
        {
            return null;
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它没有按预期使用整数,表示为字符串.
我不希望Parse.Enum()从字符串转换int,但实际上它.
一个简单的测试:

[TestClass]
public class Tester
{
    [TestMethod]
    public void TestEnum()
    {
        Assert.AreEqual(MyEnum.OptionTwo, Enumer.ParseEnum("OptionTwo"));
        Assert.IsNull(Enumer.ParseEnum("WrongString"));
        Assert.IsNull(Enumer.ParseEnum("2")); // returns 2 instead of null
        Assert.IsNull(Enumer.ParseEnum("12345")); // returns 12345 instead of null
    }
}
Run Code Online (Sandbox Code Playgroud)

只能通过两次四次检查.
Enumer.ParseEnum("2") …

c# enums

4
推荐指数
1
解决办法
698
查看次数

将字符串转换为C#中的枚举标记

可能重复:
如何在C#中将字符串转换为枚举?

如何将字符串(文本)转换(转换为)为C#中的枚举标记值

c# enums

3
推荐指数
2
解决办法
1935
查看次数

如何将字符串转换为枚举

我有以下代码:

public string GetSetting(string setting)
{
   return db2.ExecuteScalar<string>("SELECT VALUE FROM Setting WHERE  SettingType = ?", setting);
}

public enum NOA
{
    All = 0,
    Five = 5,
    Seven = 7,
    Nine = 9,
    Ten = 10
}
public static partial class Extensions
{
    public static string Text(this NOA noa)
    {
        switch (noa)
        {
            case NOA.Ten: return "10";
            case NOA.Five: return "5";
            case NOA.Seven: return "7";
            case NOA.Nine: return "9";
        }
        return "";
    }
}
Run Code Online (Sandbox Code Playgroud)

我想做的是获取 noa 的值并将其转换为 NOA。

这是我尝试过的。但是我收到一条错误消息,说“字符串不包含值的定义”:

NOA …
Run Code Online (Sandbox Code Playgroud)

.net c# string enums

3
推荐指数
1
解决办法
116
查看次数

如何将字符串转换为int类型的枚举?

可能重复:
如何在C#中将字符串转换为枚举?

我有一个int类型的枚举:

public enum BlahType
{
       blah1 = 1,
       blah2 = 2
}
Run Code Online (Sandbox Code Playgroud)

如果我有一个字符串:

string something = "blah1"
Run Code Online (Sandbox Code Playgroud)

如何将其转换为BlahType?

c# enumeration

2
推荐指数
2
解决办法
310
查看次数

如何将字符串转换为枚举值为整数?

可能重复:
如何在C#中将字符串转换为枚举?
枚举返回int值

我已声明一个枚举: -

public enum Car
        {
            SELECT = 0,
            AUDI = 1,
            NISSAN = 2,
            HONDA = 3,
            LINCOLN = 4
        } 
Run Code Online (Sandbox Code Playgroud)

现在我需要enum的int值匹配: -

private int GetCarType(string CarName)
        {
            foreach(var item in Enum.GetNames(typeof(Car))
            {
                if (item.ToLower().Equals(CarName.ToLower()))
                    //return int value of Enum of matched item; ???????
            }
Run Code Online (Sandbox Code Playgroud)

预期结果: -

int i = GetCarType(CarName); //suppose CarName is AUDI, it should return 1;
Console.write(i);

Result :- 1
Run Code Online (Sandbox Code Playgroud)

我如何获得枚举的价值?更好的编码实践.

c# enums

2
推荐指数
2
解决办法
453
查看次数

标签 统计

c# ×10

enums ×8

.net ×3

parsing ×2

converters ×1

csv ×1

csvhelper ×1

enumeration ×1

string ×1

wpf ×1