How to specify an object that is of one class but not a certain subclass?
c#, oop
Solution
So it sounds like you're trying to express the opposite of a constraint such as:
var Foo<T>() where T : SomeClass
That would constrain `T` to be `SomeClass` or a subclass1... but you're trying to make it explicitly not a `T`.
No, I'm afraid there's no such constraint in C#.
1 Well, modulo the assumption that `SomeClass` is a class to start with; it could be an interface, with the meaning you probably expect.
Problem
``` class A { } class B : A { } void method(A that is not a B argument) {} void generic_method(generic_class<A that is not a B> generic_argument) {} void params_method(params A that is not a B[] params_arguments) {} ``` Is there any syntactical way to do this? i realize that i could just do ``` if(argument is B) throw new ArgumentException("argument cannot be a B", "argument"); ``` at the beginning of the first method, and do that in a foreach for the second and third, but I'm wondering if there is some keyword or OOP concept that accomplishes this better.