C,關於反射滴問題,C ,關於反射滴一個問題

2022-07-04 11:47:09 字數 1072 閱讀 3064

1樓:會彈鋼琴的狼

樓上的**有點小錯誤..

type t = a.gettype();

b = activator.createinstance(t, null);

此時的b是一個object物件.你需要對其進行一個型別轉換.才可以正確的使用

一般來說如果已知a的型別為classa.**中應該這麼寫

type t = a.gettype();

classa b = activator.createinstance(t, null) as classa;

但是你的問題中寫的是一個未知型別...所以你也不可能知道classa的名字.所以這斷**你怎麼辦都不能使用.

思考樓主的問題.應該是延後繫結之類的問題.像這樣的情況一般都會開放一個介面.

然後變數a會去繼承這個介面.比如說iclassa.這樣的話.

不管變數a是哪個型別.我只要寫如下的**

type t = a.gettype();

iclassa b = activator.createinstance(t, null) as iclassa;

都可以呼叫iclassa裡定義的方法了.

2樓:匿名使用者

如果你用的.net 4.0 那麼直接用dynamic生命變數b;

如果不是.net 4.0,那就直接用object宣告,然後強轉成你需要的型別。

不知道型別,就不知道該做什麼、怎麼做。

3樓:三界聖神

未知型別變數a

system.type type =a.gettype();

type b=null;

好像是這麼寫!

4樓:

可以這樣,type t = a.gettype(); b = activator.createinstance(t, null);

不過,你都不知道a的型別,寫這段**有什麼意義呢,連型別都不知道,你怎麼用呢?

5樓:匿名使用者

c#好像有個typeof方法的吧?這個可以返回物件所屬的型別。

關於c語言問題關於c語言的問題

void vtaskstartscheduler void privileged function 是函式定義,函式名 vtaskstartscheduler,void 表示該函式是無參函式,前面的 void 表示這個函式無返回值。privileged function 是巨集,預編譯期間,執行文字...

關於C語言簡單問題,關於C語言一個簡單問題

c語言有兩個標準,c89 89年出的,c99 99年出的c89規定,在任何執行語句之前,在塊的開頭宣告所有區域性變數。在c99以及c 中則沒有這個限制,即在首次使用之前,可在塊的任何位置都可以宣告變數。編譯結果和c語言的編譯器實現有關,你用的可能是較老的c編譯器,只支援c89規定。簡單的講就是老的編...

關於c語言的計算問題,關於c語言的計算問題

這涉及c的細節,我建議你記住 程式中的常量其實也存放在記憶體單元中,c規定運算運算子兩旁同類時運算結果與參與運算的數的型別相同,事實上時 加法器直接處理那兩個記憶體單元中的資料,並將結果送到另一記憶體單元,而這裡的 另一記憶體單元也是兩位元組長,因此他只接收到結果的低二位元組部分 及1的補碼 所以,...