看板 C_Sharp 關於我們 聯絡資訊
問題是這樣的,常常會遇到這樣的問題 public class C(){ private string Name; } 簡單的例子,如上,常常會在開發上,需要用到之前的類別裡面,的一些資訊 像上面的例子,我需要 Name這個變數,但又不想修改 Class C,請問這樣的需求, 大家都會怎麼做? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.161.78.48 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1524905975.A.0BF.html
vi000246: 再加一個public string GetName(){return this.Name}; 04/28 17:19
vi000246: 如果不能修改class的話應該是無解 04/28 17:19
Litfal: 不能改class的話,還可以用反射 04/28 17:54
wind681201: 請問反射怎麼使用?可以抓到private? 04/28 21:57
geminily: 既然先前設計的類別成員會被使用到,為什麼不像一樓一 04/28 23:13
geminily: 樣設計一個公開的方法提取@@? 04/28 23:13
wind681201: 目前是使用一樓方式,只是想問有什麼更好的辨法 04/29 09:14
s4300026: 如果name會某些因素更新,用prop的方式可以呼叫到最新 04/29 13:46
s4300026: 的name 04/29 13:46
s4300026: 你應該要問的是: 為什麼name不被開放出來給外部的人使 04/29 13:48
s4300026: 用? 04/29 13:48
Litfal: 可以改當然是改類別簡單又快速,不能改才考慮用反射去hack 04/29 15:53
Litfal: 另外你知道prop可以設存取子吧? 04/29 15:58
wind681201: 知道,只是想找不用改之前人家寫的方式,來處理 04/29 21:04
vi000246: 反射的用法https://goo.gl/KY4tVD 04/29 23:55
t64141: 反射其實是很不建議的下下策,直接加個GetName()或是改成p 04/30 00:34
t64141: ublic string Name{get; private set;} 都比反射好很多 04/30 00:34
annies5: 繼承就好了啊, public class D: C{} 05/09 14:33
WoodChen: 繼承之後還是沒有 Name 吧? 05/13 17:17
Peruheru: Private繼承了也沒用 05/16 15:22