使用反射-動態建立物件及呼叫物件方法
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");
}
}
{
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/
-->1Assembly asm = Assembly.GetExecutingAssembly();
2Object obj = asm.CreateInstance("ConsoleApplication1.ReflectionSample", true);
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->1Assembly asm = Assembly.GetExecutingAssembly();
2Object obj = asm.CreateInstance("ConsoleApplication1.ReflectionSample", true);
方法二:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->1ObjectHandle handler = Activator.CreateInstance(null, "ConsoleApplication1.ReflectionSample");//第一個參數列示程式集名稱,為null表示當前程式集
2Object obj = handler.Unwrap();
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->1ObjectHandle handler = Activator.CreateInstance(null, "ConsoleApplication1.ReflectionSample");//第一個參數列示程式集名稱,為null表示當前程式集
2Object obj = handler.Unwrap();
帶引數建構函式的情況:
建立引數和修改createintance方法:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> 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, null, null);
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();
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> 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, null, null);
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 00024.06 反射:反射的應用2:動態建立物件反射物件
- java反射構建物件和方法的反射呼叫Java反射物件
- 使用反射建立窗體物件時,物件為NULL反射物件Null
- 物件呼叫動態變數物件變數
- Spring 解耦反射建立物件Spring解耦反射物件
- js建立物件的方法JS物件
- JavaScript 基礎(二) – 建立 function 物件的方法, String物件, Array物件JavaScriptFunction物件
- Python中動態類和動態方法的建立與呼叫Python
- go物件導向方法的呼叫Go物件
- javascript使用new建立物件JavaScript物件
- JS中建立物件的方法JS物件
- 全面解析RayFire的動態物件與靜態物件物件
- 物件導向 -- 反射物件反射
- 反射_Class物件功能反射物件
- C#動態建立介面的實現例項物件C#物件
- File 物件呼叫 renameTo() 方法失敗原因物件
- Java建立物件的方法有哪些?Java物件
- JavaScript建立物件的多種方法JavaScript物件
- 2.1.2 Python物件導向之反射以及內建方法Python物件反射
- JavaScript建立物件方法例項小結JavaScript物件
- 01 #### `__new__` ,構造方法,建立物件構造方法物件
- JavaScript物件與建立物件的方式JavaScript物件
- 動態庫的建立和呼叫
- 物件建立模式物件模式
- JS 建立物件JS物件
- Java SpringBoot 中,動態執行 bean 物件中的方法JavaSpring BootBean物件
- 深入探究JVM之物件建立及分配策略JVM物件
- c# 反射呼叫方法C#反射
- VBS指令碼程式設計(6)——物件的建立與呼叫指令碼程式設計物件
- 面對物件3-回顧方法的呼叫物件
- JS物件導向設計-建立物件JS物件
- C++中有三種建立物件的方法C++物件
- 最全--Java中建立物件的5種方法Java物件
- PHP 物件導向 (五)靜態方法PHP物件
- JDK動態代理物件與被代理物件地址值問題JDK物件
- 16 ##### 適合靜態方法的場景:方法中不使用物件的值,則直接使用靜態方法物件
- Java 中建立子類物件會建立父類物件麼?Java物件
- PHP 物件導向 (十一)反射類PHP物件反射
- 反射--Class物件功能--獲取Method反射物件