看板 C_Sharp 關於我們 聯絡資訊
遇到一個case 我在wrap一些API 我自己的namespace叫做 MyClass 這API在namespace Foo底下 他這namespace下有個enum 叫做 enum Test{ A, B, C}; 但要看到他必須using Foo; 問題是 我包這些API起來 我可能開一個function 類似 Set( Test param); 但使用者要看到Test 他就必須知道要using Foo; 但我覺得這樣不是很友善 所以我duplicate一份enum叫做 enum eTest{A,B,C} 使用者要用我 所以一定要using MyClass; Set改為 Set( eTest param) 但是我這樣duplicate一份總覺得怪怪 所以我想說試試看可不可以間接的讓使用者看到using Foo; 所以我把我code改成 namespace MyClass { using Foo; public class MyClass{ public void Set( Test param){............} } } 可是我測了~~~使用者還是認不到 Foo底下的東西 讓我很困擾 我到底是該duplicate一個enum 還是請使用者自行需要知道要寫using Foo; 我試著google了很久....可是找不到@@ 還是說做不到呢 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.15.66
Deadshot465:小弟我比較好奇的是為什麼不直接加入Foo的參考 11/25 18:48
Deadshot465:然後使用完整的名稱Foo.Test呢@@... 11/25 18:49
Deadshot465:using只是方便省略冗長的完整名稱而已不是嘛@@? 11/25 18:49
remmurds:using到底困擾什麼? 我怎麼都不懂? 11/25 20:15
QQ29:我想要內部幫她using後他就直接看的到Test這enum... 11/25 21:00
QQ29:他就不用自己using namespace了 11/25 21:00
Deadshot465:所以問題是在.....? 11/25 21:14
remmurds:那原PO乾脆寫信建議EMCA和ISO修改C#規格算了... 11/25 21:35
Deadshot465:原po可以把問題描述得再明確清楚一點嗎? 11/25 21:49
QQ29:可能是我對using有點誤解 我是有查msdn 兩種用法 11/25 23:11
QQ29:一種是 using(statement...){} 11/25 23:12
QQ29:一種是類似C++的typedef....那一般在 cs檔最上面 11/25 23:12
QQ29:有一堆using System.xxxx;這是哪一種呢? 11/25 23:13
QQ29:我想達到的目的是 我提供dll可是對方不用using 我用到的 11/25 23:13
QQ29:namespace 就可以看到 內容了 11/25 23:14
Deadshot465:我是覺得原po不要太習慣用C++去理解C#... 11/25 23:20
Deadshot465:那樣說不定有時候會反而被制約 11/25 23:21
Deadshot465:cs檔最上面的using是指使用名稱空間 11/25 23:21
Deadshot465:但那不是必要 那只是方便可以省略完整寫出每個類別 11/25 23:21
Deadshot465:冗長的完整名稱 譬如說DataSet這個類別 11/25 23:22
Deadshot465:他是位於System.Data名稱空間之下 11/25 23:22
Deadshot465:沒using的前提下你必須每次都寫出System.Data.DataSet 11/25 23:23
Deadshot465:但using System.Data之後 就可以直接寫DataSet 11/25 23:23
Deadshot465:反而比起using 比較重要的是參考的加入 11/25 23:24
Deadshot465:有些類別和名稱空間 預設不會被參考 11/25 23:24
Deadshot465:你必須手動加入參考才可使用 11/25 23:24
Deadshot465:所以你的問題是在你的Set方法需要使用到Foo.Test 11/25 23:26
Deadshot465:但是你希望使用者在call你的方法時不用using Foo嗎? 11/25 23:27
QQ29:對 不想讓他去using 因為她不知道該using啥 11/26 00:41
QQ29:http://tinyurl.com/2aolfgb 請問第一個using 指示詞。 11/26 00:42
QQ29:他說有兩種用法 我現在是想第一種用法 using System.Text; 11/26 00:42
QQ29:使用者不要知道要using這 他就看的到裡面的東西了 11/26 00:43
QQ29:請問做得到嗎 11/26 00:43
ssccg:使用者不會不知道該using啥吧,因為需要把Foo.dll加入參考 11/26 02:06
ssccg:using是個directive,只對寫了using的那個檔案有效 11/26 02:06
ssccg:是告訴compiler對沒指定namespace又不在該namespace中的type 11/26 02:07
ssccg:要去哪邊找,而不是inline或是import那種意思 11/26 02:08
Deadshot465:如果使用者只參考了你的組件 卻沒參考Foo的話 11/26 02:23
Deadshot465:你的方法是起不了作用的 11/26 02:23
Deadshot465:因為對使用者來說如果沒參考Namespace Foo的話 11/26 02:24
Deadshot465:Foo.Test這個enum是不存在的 自然也無法傳入Set()了 11/26 02:25
Deadshot465:不然的話就是將兩者寫在不同的類別檔中 11/26 02:26
Deadshot465:但位在同一個命名空間之下 11/26 02:26
jrexz:不就是 Test => Foo.Test , using 只是可以省去打Foo 11/26 02:57
remmurds:我好奇原PO是不是不知道VisualStudio可以瀏覽一個DLL底下 11/26 06:20
remmurds:的所有命名空間和所有類別 11/26 06:21
remmurds:把時間花在這 坦白說真的沒啥意義... 11/26 06:24
horngsh:建議樓主弄清何謂Namespace以及其真正用途. 11/26 10:23
remmurds:同意樓上 11/26 12:32
andymai:這就像在路上喊一聲"志明"或"春嬌"~結果有好幾人回頭一樣 11/26 12:43