// Получить сведения о конструкторе.

Constructorlnfo[] ci = t.GetConstructors() ;

Console.WriteLine('Доступные конструкторы: '); foreach(Constructorlnfo с in ci) {

// Вывести возвращаемый тип и имя.

Console.Write(' ' + t.Name + '(');

// Вывести параметры.

Parameterlnfo[] pi = с.GetParameters(); for(int i=0; i < pi.Length; i++)    {

Console.Write(pi[i].ParameterType.Name + ' ' + pi[i].Name);

¦ if(i+1 < pi.Length) Console.Write(', ');

}

Console.WriteLine (')');

}

Console.WriteLine ();

// Найти подходящий конструктор, int x;

for(x=0; x < ci.Length; x++)    {

Parameterlnfo[] pi = ci[x].GetParameters() ; if (pi.Length == 2) break;

}

if(x == ci.Length) {

Console.WriteLine('Подходящий конструктор не найден.'); return;

}

else

Console.WriteLine('Найден конструктор с двумя параметрами. ');

// Сконструировать объект, object[] consargs = new object[2]; consargs[0] = 10; consargs[1] = 20;

object reflectOb = ci[x].Invoke(consargs) ;

Console.WriteLine('пВызов методов для объекта reflectOb.'); Console.WriteLine();

MethodInfo[] mi = t.GetMethods();

// Вызвать каждый метод, foreach(Methodlnfo m in mi) {

//• Получить параметры.

Parameterlnfo[] pi = m.GetParameters();

if(m.Name.CompareTo('Set')==0 &&

pi[0].ParameterType == typeof(int)) {

// Это метод Set(int, int). object[] args = new object[2]; args[0] = 9; args[l] = 18;

m.Invoke(reflectOb, args) ;

}

else if(m.Name.CompareTo('Set')==0 &&

pi[0].ParameterType == typeof(double))    {

// Это метод Set(double, double).

object[] args = new object[2];

args[0] = 1.12;

args[l] = 23.4;

m.Invoke(reflectOb, args);

}

else if(m.Name.CompareTo('Sum')==0)    {

val = (int) m.Invoke(reflectOb, null);

Console.WriteLine('Сумма равна ' + val);

}

else if(m.Name.CompareTo('IsBetween')==0)    {

object[] args = new object[1];

args[0] = 14;

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату