我有一个通用类可以帮助我检查参数值:
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;
}
我收到此错误(在编译时):
静态类型不能用作类型参数
我究竟做错了什么?
这是故意的。
静态类试图防止不当使用,因此在几乎所有情况下,您都不能在通常想要的情况下使用它们instance类型...并且包括类型参数。
参见部分C# 6 规范的“静态类” https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/classes#14224-static-classes对于可以引用静态类类型的非常有限的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)