爲什麼我看不到這個枚舉擴展方法? (我想我瘋了)。爲什麼我不能「看到」這個枚舉擴展方法?
File1.cs
namespace Ns1
{
public enum Website : int
{
Website1 = 0,
Website2
}
}
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);
}
}
}
豈不是網站網站= WebSite.Website1;是一個枚舉? – btlog 2010-07-20 07:26:40
@btlog:兩者都有效。在這種情況下,他沒有使用實際值,所以它沒有任何區別。 – 2010-07-20 07:31:51
@btlog:'new Website()'給出與'Website.Website1'相同的結果,因爲它返回默認值,即底層值爲0的默認值。不是我推薦這種語法:-) – 2010-07-20 07:33:02