我有问题。我想制作一个通用的方法来将我的错误枚举转换为特定的响应。 例如我的回复对象
public class ErrorResponse
{
public ulong Code { get; set; }
public string Description { get; set; }
public string OrigionationSystem { get; set; }
}
我希望将所有错误转换为此回复 例如
public enum ProductErrors:ulong
{
None,
[Description("Prouct Not Found")]
ProductNotFound,
[Description("Invalid Product Isbn")]
InvalidIsbn
}
public enum CustomerErrors:ulong
{
None,
AlreadyExists,
InvalidEmailAddress
}
现在我想制作通用方法将我的枚举转换为ErrorResponse。 以前我使用此方法将我的错误代码转换为错误响应。
public static IList<ErrorResponse> ParseErrorCodeToErrorResponse(this IEnumerable<ProductErrors> errorCodes)
{
return errorCodes.Select(x => new ErrorResponse
{
Code = (ulong)x,
Description = x.GetDescription(),
OriginatingSystem = Extensions.GetCurrentSystemName()
} ).ToList();
}
问题在这里提出:
public static IList<ErrorResponse> ParseErrorCodeToErrorResponse<T>(this IEnumerable<T> errorCodes) where T : struct, IConvertible
{
if (!typeof(T).IsEnum)
{
throw new ArgumentException("T must be an enumerated type");
}
return errorCodes.Select(x => new ErrorResponse
{
Code = (ulong)x,
Description = x.GetDescription(),
OriginatingSystem = Extensions.GetSystemName()
}).ToList();
}
如果只有一个枚举,它的工作正常,但是当我把它变成通用时它会说
输入 T无法转换为ulong ,而 x.GetDescription()则表示无法解析 GetDescription()< /强>