使用反射-動態建立物件及呼叫物件方法

iDotNetSpace發表於2008-09-27
namespace ConsoleApplication1
使用反射-動態建立物件及呼叫物件方法
{
    
public class ReflectionSample
使用反射-動態建立物件及呼叫物件方法    
{
        
private string firstName = string.Empty;
        
private string lastName = string.Empty;

使用反射-動態建立物件及呼叫物件方法        
public ReflectionSample() { }

        
public ReflectionSample(string firstName, string lastName)
使用反射-動態建立物件及呼叫物件方法        
{
            
this.firstName = firstName;
            
this.lastName = lastName;
        }


        
public string SayHello()
使用反射-動態建立物件及呼叫物件方法        
{
            
return string.Format("Hello {0} {1}"this.firstName, this.lastName);
        }


        
public static string StaticHello()
使用反射-動態建立物件及呼叫物件方法        
{
            
return string.Format("Hello, I am a static method");
        }

    }

}


建立物件,方法一:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt1Assembly asm = Assembly.GetExecutingAssembly();
2Object obj = asm.CreateInstance("ConsoleApplication1.ReflectionSample"true);

 

 

方法二:

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt1ObjectHandle handler = Activator.CreateInstance(null"ConsoleApplication1.ReflectionSample");//第一個參數列示程式集名稱,為null表示當前程式集
2Object obj = handler.Unwrap();

 

帶引數建構函式的情況:

建立引數和修改createintance方法:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt 1//建立引數:
 2Object[] paras = new Object[2];
 3paras[0= "Jimmy";
 4paras[1= "Zhang";
 5
 6//建立物件:
 7Assembly asm = Assembly.GetExecutingAssembly();
 8Object obj = asm.CreateInstance("ConsoleApplication1.ReflectionSample"true, BindingFlags.Default, null, paras, nullnull);
 9
10//The second way
11//ObjectHandle handler = Activator.CreateInstance(null, "ConsoleApplication1.ReflectionSample", true, BindingFlags.Default, null, paras, null, null, null);
12//Object obj = handler.Unwrap();

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-465894/,如需轉載,請註明出處,否則將追究法律責任。

相關文章