Методы расширения просто syntactic sugar
и они only work with instances and not with the type
. Таким образом, вы должны вызывать метод расширения для экземпляра типа Website
, а не для самого типа, как упомянуто Марком.
Для вашего сведения, в дополнение к тому, что сказал Марк, при компиляции код преобразуется, как показано ниже.
//Your code
Website website = new Website();
var websites = website.ToDictionary<int>();
//After compilation.
Website website = new Website();
var websites = EnumExtensions.ToDictionary<int>(website);
improved version
метода Extension будет расширять только тип Website, а не Enum.
//converts enum to dictionary of values
public static class EnumExtensions
{
public static IDictionary ToDictionary<TEnumValueType>(this Website e)
{
if(typeof(TEnumValueType).FullName != Enum.GetUnderlyingType(e.GetType()).FullName) throw new ArgumentException("Invalid type specified.");
return Enum.GetValues(e.GetType())
.Cast<object>()
.ToDictionary(key => Enum.GetName(e.GetType(), key),
value => (TEnumValueType) value);
}
}