Generics mint fogalom létezik a .net-ben. És ez jó. Gondoltam csinálok egy singleton ősosztályt mert az legalább olyan jó mint a generics.
public abstract class Singleton<T> System.Object, new() { private static T _instance; public static T get() { if (_instance == null) { _instance=new T(); } return _instance; } }
Öröm boldogság, gondoltam. De a fordító nem örült, és ezt mondta:
Error 1 Constraint cannot be special class ‘object’
Ejnye. Megnéztem a helpet.
Compiler Error CS0702
The following types may not be used as constraints: System.Array, System.Delegate, System.Enum, or System.ValueType.
Szerencsére, mint a Microsoft termékeknél általában, mindig van egy alternatív megoldás.
public abstract class Singleton<T> { private static T _instance; public static T get() { if (_instance == null) { _instance = System.Activator.CreateInstance<T>(); } return _instance; } }