作者yan04870449 (楊伯)
看板C_Sharp
標題[問題] 關於泛型傳遞類別的問題
時間Sun Oct 24 23:28:20 2010
如下面這樣
public class A
{
public Name(){ ptint("A");}
}
void ShowName<T>( T Obj )
{
Type tp = T.GetType();
tp.Name();
}
void main()
{
A a = A();
ShowName(a);
}
如上面那樣,同樣的概念我沒記錯的話在c++是可行的
,但是我在c#會有error,好像是說tp沒有Name()可以
呼叫??
c#初學,請各位前輩指教一下!!感恩@@
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.128.56
※ 編輯: yan04870449 來自: 122.117.128.56 (10/24 23:29)
2F:→ yan04870449:感謝J大的回覆,我可以接收到傳過來的物件,但是我沒 10/24 23:36
3F:→ yan04870449:辦法呼叫物件裡的函式 10/24 23:36
4F:→ james732:把你想做的事情說得明確一點吧... 10/24 23:39
5F:→ yan04870449:我想要做的是有點像事件呼叫,我先在a裡面定義一個函 10/24 23:41
6F:→ yan04870449:式,然後我把這個物件用函式傳出去,接到的那個函式再 10/24 23:42
7F:→ yan04870449:呼叫a裡面這個已經定義好的函式 10/24 23:43
8F:→ james732:何不寫 void foo(A a) { a.function(); } 呢? 10/24 23:44
9F:→ james732:這裡看不出你使用泛型的必要性 10/24 23:49
10F:→ yan04870449:大概是這樣子,我的A是一個獨立的工作類別,但它必須 10/24 23:50
11F:→ yan04870449:要被呼叫才會開始運作,當運作結束之後會傳訊息回到呼 10/24 23:50
12F:→ yan04870449:叫它的那個類別做通知,因為呼叫A的物件都不一樣,所 10/24 23:51
13F:→ yan04870449:以才想要用像call back的方式來做 10/24 23:52
14F:→ james732:還是看不出為什麼會用到泛型...XD 10/24 23:54
15F:→ james732:你可以用C++給我個完整的例子 我寫成C#讓你參考? 10/24 23:55
17F:→ yan04870449:C#這邊遇到的問題就是C++ Code那行t.Return(); 10/25 00:10
18F:→ yan04870449:C#這邊好像沒辦法像C++那樣直接呼叫T裡面的function 10/25 00:11
20F:→ james732:使用繼承共同parent的方式去做 10/25 00:30
21F:→ yan04870449:j大威能@@ 問題解決!!! 10/25 00:38
22F:→ yan04870449:不過其實我修改的東西是在別人制定的架構下,我這樣子 10/25 00:38
23F:→ yan04870449:都要在接收的class內去繼承interface,如果不繼承也可 10/25 00:40
24F:→ yan04870449:以做到相同的結果嗎? 10/25 00:40
25F:→ ssccg:一般的callback應該是在呼叫A的時候,把callback function 10/25 06:39
26F:→ ssccg:當成參數一起傳入吧,而不是A直接去猜caller的callback func 10/25 06:40
27F:→ ssccg:就算不這樣做,定義interface也是比較合理的作法 10/25 06:48
28F:→ ssccg:直接假設object裡有哪個方法不就相當於定了interface卻不寫 10/25 06:57
29F:→ ssccg:在程式中,只有寫的人才知道的溝通方式嗎 10/25 06:57
30F:→ ssccg:硬要做的話,Type tp = typeof(T); 或是 Obj.GetType(); 10/25 07:10
31F:→ ssccg:tp.InvokeMember("Name",BindingFlags.InvokeMethod, null 10/25 07:10
32F:→ ssccg:, Obj, null); 最後一個參數是傳給方法的參數object array 10/25 07:11