我正在尝试将一些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)
通过以十六进制定义值,我错了吗?还是我错过了别的什么?
我正在使用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) 如何从枚举转换为字符串,反之亦然?
考虑到枚举可以包含多个标志的情况,如何获得枚举包含的所有标志的列表?
我试图从WPF组合框选择值转换为枚举器它在运行时返回无效的强制转换,否则字符串和枚举名称匹配我的代码是
Siren.PfundMemberWebServices.Emirates EM = (Siren.PfundMemberWebServices.Emirates)cmbemirate.SelectedValue
Run Code Online (Sandbox Code Playgroud) 假设我有两个类:
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) 假设我有一个枚举:
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") …
我有以下代码:
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) 可能重复:
如何在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#中将字符串转换为枚举?
枚举返回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# ×10
enums ×8
.net ×3
parsing ×2
converters ×1
csv ×1
csvhelper ×1
enumeration ×1
string ×1
wpf ×1