Junior — Middle
Vai ir ierobežojumi, definējot savu universālo šablonu (ģenerisku)?
sobes.tech AI
Atbilde no AI
Veidojot savu universālo šablonu (generics) C# ir pastāv dažādi ierobežojumi:
- Parametru tipiem jābūt atsauces, vērtību tipiem vai tiem jābūt ar noteiktiem ierobežojumiem (constraints), piemēram, mantošana no noteiktas klases, interfeisa īstenošana, bezparametru konstruktora esamība.
- Ja ir nepieciešama specifiska funkcionalitāte, primitivus tipus tieši bez ierobežojumiem izmantot nav iespējams.
- Nav iespējams izveidot parametra tipa eksemplāru bez new() ierobežojuma, jo kompilators nezinās, kā to inicializēt.
- Bez ierobežojumiem nav iespējams izmantot typeof(T) vai is T operatorus.
Ierobežojuma piemērs:
public class Repository<T> where T : IEntity, new()
{
public T CreateNew() => new T();
}
Šeit T jāīsteno interfeiss IEntity un tam jābūt bezparametru konstruktors.