У меня проблема У меня есть простое перечисление с атрибутом description в c #
public enum Service
{
[Description("Unknown")]
Unknown = 0
}
Нет, у меня есть расширение в f #, которое даст мне это описание, и оно выглядит так:
[<Extension>]
static member inline GetEnumDescription(enum:'TEnum when 'TEnum :> Enum) : string =
try
let attributes : seq<DescriptionAttribute[]> = enum.GetType().GetField(enum.ToString()).GetCustomAttributes(typedefof<DescriptionAttribute>, false) |> Seq.cast<DescriptionAttribute[]>
match attributes |> Seq.length > 0 with
| true ->
let attribute : DescriptionAttribute = enum |> Seq.head
attribute.Description
| _ -> enum.ToString()
with
| :? EnumException as ex ->
EnumExtensions._logger.Error(sprintf "Exception in getting enum description - %s" ex.Message)
enum.ToString()
Итак, мета в c # выглядит так:
[CompilationMapping(SourceConstructFlags.ObjectType)]
public class EnumExtensions
{
public EnumExtensions();
public static string GetEnumDescription<TEnum>(this TEnum @enum) where TEnum : Enum, IEnumerable<DescriptionAttribute>;
}
Теперь, когда я попробую использовать это в c #, вызов:
public string Description => Service.GetEnumDescription(); //Service is set to Unknown enum value
Я получаю что-то вроде:
Ошибка CS0315 Тип 'Enums.Service' нельзя использовать в качестве параметра типа 'TEnum' в универсальном типе или методе 'EnumExtensions.GetEnumDescription (TEnum)'. Преобразование из «Enums.Service» в «System.Collections.Generic.IEnumerable» отсутствует.
Я потерян в этом.