Press "Enter" to skip to content

Może te generyki nie są takie złe…

Tak, deklaracje typów mogą być długie.
Weźmy sobie typ na przykład:

public class ThreeGradeRa : RiskAssessment<ThreeGradeRiskRowAssessmentModel>, IRiskAssessment


Mamy tu po prostu generyka, który jest niczym innym jak headerem z listą, przy czym jeszcze ma jakiś interfejs. To jeszcze nic. Chcecie zobaczyć jaki potworek utworzyłam dla RiskAssessment&ltT&gt? Tam to dopiero magia:p

public class  RiskAssessment<T> : BindingList<T> where T : RiskAssessmentRowModel

Oczywście po dwukropku można podać klasę, można podać interfejsy, można też podać dziwne konstrukcje typu where T: struct – jeśli parametr ma być value type (niekoniecznie strukturą), albo T : class – jeśli parametr ma być typu generycznego. Jest też taki twór jak where T : new() – czyli wymuszenie, że typ ma mieć konstruktor bezparametrowy. Można to łączyć, wystarczy wymienić parametry jak człowiek, po przecinku. where T : IDupable, new() chociażby.
A przy kilku parametrach (bo i tak się da):

 class DoubleBlasta<T, Tdwa>
        where T : IComparable, IEnumerable, 
        where Tdwa: IWtfable, new()
{cośtam}

Tak tylko dodam, że to new() musi być na końcu, acz na msdnie o tym nie ma. Albo ja tu nie widzę.

Tak czy owak, przestałam się tych generyków bać;)

Ok, miało być dłużej i ładniej, ale się późno zrobiło.