I know you can write:
class GenericClass<T> where T : new()
{
}
to enforce that T
has an empty constructor.
My Qs are :
can you enforce that T
has a constructor with a specific type of parameter? Like:
class SingletonFactoryWithEmptyConstructor<T> where T : new(int)
can you enforce that T
has a static function (let's say, void F()
) so that you can use this function inside the generic class? Like :
class GenericClass<T> where T : void F() { void G () { TF(); } }
I know you can specify that T
implements an interface but I don't want that. I want to specify that T
has a static function.
No, there's nothing like this in C#.
I've previously suggested that "static interfaces" could express this reasonably neatly. They'd only be useful for generic type constraints (I suspect, anyway) but then you could express:
The last of these points is particularly interesting in my view, allowing things like a generic "Average" method over numeric types with suitable addition and division operators.
I believe some folks at MS have thought about something similar, but I haven't heard anything to suggest they're actively working on it.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.