ConstructorInfo sisältää tietoa muodostimesta. Tyypin muodostimien tiedot saa Type -luokasta metodeilla GetConstructor ja GetConstructors.

GetConstructor -metodi ottaa parametrina Type[]-objektin, johon olisi tarkoitus laittaa muodostimen parametrien tyypit oikeassa järjestyksessä. Esim. luokka Tuote

public class Tuote
{
	public int Id { get; set; }
	public string Nimi { get; set; }
	public decimal Hinta { get; set; }

	public Tuote(string nimi, decimal hinta)
	{
		this.Nimi = nimi;
		this.Hinta = hinta;
	}
}

sisältää yhden muodostimen, jonka parametrien tyypit ovat string ja decimal. Tämän muodostimen tiedot voisi hakea koodilla

// haetaan tyyppi
Type tyyppi = typeof(Tuote);
// parametrien tyypit string ja decimal oikeassa järjestyksessä
Type[] parametrienTyypit = new[] { typeof(string), typeof(decimal) };
// haetaan muodostimen tiedot
ConstructorInfo ctorInfo = tyyppi.GetConstructor(parametrienTyypit);

GetConstructors palauttaa kaikkien muodostimien tiedot.

ConstructorInfo sisältää mm. ominaisuudet

Nimi Tyyppi Sisältö
DeclaringType Type Tyyppi, jonka muodostin on kyseessä
IsAbstract bool Onko abstrakti
IsPrivate bool Onko yksityinen
IsPublic bool Onko julkinen
IsStatic bool Onko staattinen

sekä metodit

Nimi Paluutyyppi Tehtävä
GetCustomAttributes object[] Palauttaa attribuutit
GetParameters ParameterInfo[] Palauttaa parametrien tiedot
Invoke object Kutsuu muodostinta (luo instanssin)

Instanssin luominen

Tyypistä voi luoda instanssin kutsumalla ConstructorInfo-luokan metodia Invoke

// haetaan tyyppi
Type tyyppi = typeof(Tuote);
// muodostimen parametrien tyypit
Type[] parametrienTyypit = new[] { typeof(string), typeof(decimal) };
// haetaan muodostimen tiedot
ConstructorInfo ctorInfo = tyyppi.GetConstructor(parametrienTyypit);

// muodostimelle annettavat parametrit
object[] parametrit = new object[] { "Tuote 1", 99.90m };
// luodaan instanssi
Tuote t = (Tuote)ctorInfo.Invoke(parametrit);
u7x9cc0

Navigointi

Social Media