I've a generic class, that helps me to do checks on argument values
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))); } } }
But when I try to use it with a static class :
internal static class Class1 { private static Argument<Class1> _arg; }
I got this error (at compilation):
static types cannot be used as type arguments
What I'm doing wrong?
C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...
Compared to other languages—like Java, PHP, or C#—C is a relatively simple language to learn for anyone just starting to learn computer programming because of its limited number of keywords.
What is C? C is a general-purpose programming language created by Dennis Ritchie at the Bell Laboratories in 1972. It is a very popular language, despite being old. C is strongly associated with UNIX, as it was developed to write the UNIX operating system.
In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.
This is deliberate.
Static classes try to prevent inappropriate use, so in almost all situations, you can't use them in situations where you'd normally want an instance of the type... and that includes type arguments.
See section "Static classes" of the C# 6 spec for the very limited set of situations in which you can refer to static class types.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With