Ben*_*Ben 9 c# extension-methods enums
为什么我看不到这个枚举扩展方法?(我想我会疯了).
File1.cs
namespace Ns1
{
public enum Website : int
{
Website1 = 0,
Website2
}
}
Run Code Online (Sandbox Code Playgroud)
File2.cs
using Ns1;
namespace Ns2
{
public class MyType : RequestHandler<Request, Response>
{
public override Response Handle(Request request, CRequest cRequest)
{
//does not compile, cannot "see" ToDictionary
var websites = Website.ToDictionary<int>();
return null;
}
}
//converts enum to dictionary of values
public static class EnumExtensions
{
public static IDictionary ToDictionary<TEnumValueType>(this Enum 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 15
您试图将扩展方法作为类型上的静态方法而不是作为该类型对象上的实例方法.不支持使用扩展方法.
如果您有实例,则找到扩展方法:
Website website = Website.Website1;
var websites = website.ToDictionary<int>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1399 次 |
| 最近记录: |