我有一個泛型類,可以幫助我做參數檢查值C# - 靜態類型不能用作類型參數
internal sealed class Argument<T>
where T : class
{
private void TraceAndThrow(Exception ex)
{
new InternalTraceHelper<T>().WriteError(ex);
throw ex;
}
internal void ThrowNull(object value, string argName)
{
if (ReferenceEquals(value, null))
{
TraceAndThrow(new ArgumentNullException(argName));
}
}
internal void ThrowIf(bool condition, string argName)
{
if (condition)
{
TraceAndThrow(new ArgumentException(null, argName));
}
}
internal void ThrowNotInEnum(Type enumType, object value)
{
if (!Enum.IsDefined(enumType, value))
{
TraceAndThrow(new ArgumentOutOfRangeException(Resources.ArgEnumIllegalVal.InvariantFormat(value)));
}
}
}
但是,當我試圖用靜態類使用它:
internal static class Class1
{
private static Argument<Class1> _arg;
}
我得到這個錯誤(編譯):
靜態類型不能用作類型參數
我做錯了什麼?
做我的靜態類非靜態但具有私有構造函數將做這項工作?所以沒有人可以實現它,但是非靜態的。這是執行它的好方法嗎? (感謝該部分,我已閱讀它) – 2011-05-02 15:02:07
@Arnaud F .:那麼會*工作* - 但你用什麼類型的參數?它有什麼意義呢?它看起來只是由'InternalTraceHelper'使用的,我們不知道那是什麼。 – 2011-05-02 15:04:13
'InternalTraceHelper'做'Trace.Write()',參數類型用於定義跟蹤的類別。可以用'Trace.WriteLine(「消息」,typeof(T).FullName)替換; // Where T = Class1' – 2011-05-02 15:08:49