.


:




:

































 

 

 

 


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;

if(<bool) m.Invoke (reflectOb, args))

Console.WriteLine(" 14 x ");

}

else ifjm.Name.CompareTo("Show")==0) {

m.Invoke(reflectOb, null);

}

}

}

}

.

: MyClass : AnotherClass : Demo

: MyClass

:

MyClass(Int32 i)

MyClass(Int32 i, Int32 j)

.

MyClass(int, int)

: 10, : 20

reflectOb

30

14

Set (int, int). : 9, : 18 Set(double, double). : 1, : 23 : 1, : 2 3

, , lasses. . MyClass, .

MyClasses. , . ().

// MyClasses.exe.

Assembly asm = Assembly.LoadFrom("MyClasses.");

// , MyClasses.exe.

[] alltypes = asm.GetTypes(); foreach(Type temp in alltypes)

Console.WriteLine(": " + temp.Name);

, .

. . (DLL) .dll. , MyClasses. cs :

csc /t:library MyClasses.es

MyClasses.dll. DLL , , , Main () , , . Demo Main () . DLL Main () . MyClass DLL, LoadFrom () .

Assembly asm = Assembly.LoadFrom("MyClasses.dll");

, . MyClass , MyClass. , Set Sum . , . , . , , , , .

, . MyClasses. , MyClass , MyClass, .

// MyClass, .

Using System;

Using System.Reflection;

class ReflectAssemblyDemo { static void Main() { int val;

Assembly asm = Assembly.LoadFrom("MyClasses.exe");

Type[] alltypes = asm.GetTypes();

Type t = alltypes[0]; // Console.WriteLine(": " + t.Name);

Constructorlnfo [.] ci = t.GetConstructors();

// .

Parameterlnf[] cpi = ci[0].GetParameters(); object reflectOb;

if (cpi.Length > 0) {

object[] consargs = new object[cpi.Length];

// , fox (int n=0; n < cpi.Length; n+ +) consargs[n] = 10 + n * 20;

// . reflectOb = ci [0].Invoke(consargs);

} else

reflectOb = ci [0].Invoke(null);

Console.WriteLine(" reflectOb."); Console.WriteLine();

// .

MethodInfo[] mi = t.GetMethods(BindingFlags.DeclaredOnly |

BindingFlags.Instance | BindingFlags.Public);

// , foreach(Methodlnfo m in mi) {

Console.WriteLine(" {0} ", m.Name);

// .

Parameterlnf[] pi = m.GetParameters();

// , switch(pi.Length) {

case 0: // if(m.ReturnType == typeof(int)) {

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

Console.WriteLine(": " + val);

}

else if(m.ReturnType == typeof(void)) {





:


: 2016-12-03; !; : 377 |


:

:

.
==> ...

1348 - | 1189 -


© 2015-2024 lektsii.org - -

: 0.016 .