나는 나를 인수에 대한 검사를 수행하는 데 도움이 제네릭 클래스는,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;
}
:
정적 유형의 형태 인수로 사용할 수 없습니다
내가 뭘 잘못하고있어?
고정 클래스가 아닌 정적 클래스를 수행하지만 개인 생성자를 사용하면 작업이 수행됩니까? 아무도 그것을 instanciate 수 있지만 정적이 아닙니다. 이것을 수행하는 좋은 방법입니까? (이 부분을 읽어 주셔서 감사합니다.) –
@Arnaud F : 글쎄, * 작동합니다 * -하지만 형식 인수는 무엇을 사용하고 있습니까? 그게 무슨 말이야? 'InternalTraceHelper'에 의해서만 사용 된 것처럼 보입니다. 우리는 그것이 무엇인지 알지 못합니다. –
'InternalTraceHelper'는'Trace.Write()'를하고, 인자 타입은 트레이스의 카테고리를 정의하는데 사용됩니다. 'Trace.WriteLine ("message", typeof (T) .FullName);로 대체 될 수 있습니다. // Where T = Class1' –