Utilize MyClass without assuming any prior knowledge : Reflection Assembly : Development Class C# Source Code


Custom Search

C# Source Code » Development Class » Reflection Assembly »

 

Utilize MyClass without assuming any prior knowledge








    

/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/


// Utilize MyClass without assuming any prior knowledge. 
 
using System; 
using System.Reflection; 
 
public class ReflectAssemblyDemo1 { 
  public static void Main() { 
    int val; 
    Assembly asm = Assembly.LoadFrom("MyClasses.exe"); 
 
    Type[] alltypes = asm.GetTypes(); 
 
    Type t = alltypes[0]; // use first class found 
 
    Console.WriteLine("Using: " + t.Name); 
 
    ConstructorInfo[] ci = t.GetConstructors(); 
 
    // Use first constructor found. 
    ParameterInfo[] cpi = ci[0].GetParameters(); 
    object reflectOb; 
 
    if(cpi.Length > 0) { 
      object[] consargs = new object[cpi.Length]; 
 
      // initialize args 
      for(int n=0; n < cpi.Length; n++) 
        consargs[n] = 10 + n * 20; 
 
      // construct the object 
      reflectOb = ci[0].Invoke(consargs); 
    } else 
      reflectOb = ci[0].Invoke(null); 
     
 
    Console.WriteLine("\nInvoking methods on reflectOb."); 
    Console.WriteLine(); 
 
    // Ignore inherited methods. 
    MethodInfo[] mi = t.GetMethods(BindingFlags.DeclaredOnly | 
                                   BindingFlags.Instance | 
                                   BindingFlags.Public) ; 
 
    // Invoke each method. 
    foreach(MethodInfo m in mi) { 
      Console.WriteLine("Calling {0} ", m.Name); 
 
      // Get the parameters 
      ParameterInfo[] pi = m.GetParameters(); 
 
      // Execute methods. 
      switch(pi.Length) { 
        case 0: // no args 
          if(m.ReturnType == typeof(int)) { 
            val = (int) m.Invoke(reflectOb, null); 
            Console.WriteLine("Result is " + val); 
          } 
          else if(m.ReturnType == typeof(void)) { 
            m.Invoke(reflectOb, null); 
          } 
          break; 
        case 1: // one arg 
          if(pi[0].ParameterType == typeof(int)) { 
            object[] args = new object[1]; 
            args[0] = 14; 
            if((bool) m.Invoke(reflectOb, args)) 
              Console.WriteLine("14 is between x and y"); 
            else 
              Console.WriteLine("14 is not between x and y"); 
          } 
          break; 
        case 2: // two args 
          if((pi[0].ParameterType == typeof(int)) && 
             (pi[1].ParameterType == typeof(int))) { 
            object[] args = new object[2]; 
            args[0] = 9; 
            args[1] = 18; 
            m.Invoke(reflectOb, args); 
          } 
          else if((pi[0].ParameterType == typeof(double)) && 
                  (pi[1].ParameterType == typeof(double))) { 
            object[] args = new object[2]; 
            args[0] = 1.12; 
            args[1] = 23.4; 
            m.Invoke(reflectOb, args); 
          } 
          break; 
      }      
      Console.WriteLine(); 
    } 
 
  } 
}
//==============================================================
/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/


// A file that contains three classes.  Call this file MyClasses.cs. 
 
using System; 
 
class MyClass { 
  int x; 
  int y; 
 
  public MyClass(int i) { 
    Console.WriteLine("Constructing MyClass(int). "); 
    x = y = i;  
    show(); 
  } 
 
  public MyClass(int i, int j) { 
    Console.WriteLine("Constructing MyClass(int, int). "); 
    x = i; 
    y = j; 
    show(); 
  } 
 
  public int sum() { 
    return x+y; 
  } 
 
  public bool isBetween(int i) { 
    if((x < i) && (i < y)) return true; 
    else return false; 
  } 
 
  public void set(int a, int b) { 
    Console.Write("Inside set(int, int). "); 
    x = a; 
    y = b; 
    show(); 
  } 
 
  // Overload set. 
  public void set(double a, double b) { 
    Console.Write("Inside set(double, double). "); 
    x = (int) a; 
    y = (int) b; 
    show(); 
  } 
 
  public void show() { 
    Console.WriteLine("Values are x: {0}, y: {1}", x, y); 
  } 
 
} 
 
class AnotherClass { 
  string remark; 
 
  public AnotherClass(string str) { 
    remark = str; 
  } 
 
  public void show() { 
    Console.WriteLine(remark); 
  } 
} 
 
public class Demo12 { 
  public static void Main() { 
    Console.WriteLine("This is a placeholder."); 
  } 
}


           
       
    
   
  
   







HTML code for linking to this page:

Follow Navioo On Twitter

C# Source Code

 Navioo Development Class
» Reflection Assembly