我有一种将using System;
using System.Threading;
using System.Diagnostics;
namespace MyChildProcess
{
class Program
{
static void Main(string[] args)
{
try
{
// Representing some time consuming work.
Thread.Sleep(5000);
EventWaitHandle.OpenExisting("CHILD_PROCESS_READY")
.Set();
Process.GetProcessById(Convert.ToInt32(args[0]))
.WaitForExit();
}
catch (Exception exception)
{ }
}
}
}
转换为DataTable
的方法。直到我在List<T>
数据库中拥有bit
列之前,它一直运行良好。无法将MySql
的值bit
转换为1
类型的C#
。所以我尝试将其转换为
bool
其中Convert.ChangeType(value, prop.PropertyType);
是数据库返回的内容,而value
中的prop
是PropertyInfo
的位置。
工作正常,但破坏了枚举的添加方式。
例如以前我能够将整数分配给枚举字段,但是现在出现错误
从“ System.Int32”到“ EnumsAndConstants.QuestionType”的无效转换。
我知道一种解决方案可以将value
转换为仅在发生value
时键入,但我根本不希望发生异常。是否有适用于所有类型的具体解决方案?
答案 0 :(得分:2)
您可以在if
语句中检查prop.PropertyType.IsEnum
并像这样使用Enum.ToObject
:
if (prop.PropertyType.IsEnum)
{
return Enum.ToObject(prop.PropertyType, value);
}
else
{
return Convert.ChangeType(value, prop.PropertyType);
}