小孩子:「 Model 裡面可以用 變數來取代嗎」
卡卡米:「 變數可以取代變數」
卡卡米:「 就寫成 變數 = 變數 即可」
小孩子:「 比如 class cdmis.Models.RPC103 裡面有 SYS_P,SYS_M,SYS_S」
小孩子:「 我在 Controller 裡面」
小孩子:「 抓了 RPC103」
卡卡米:「 你是不是 直接貼 那幾行 code」
卡卡米:「 我讀code 應該比較快」
小孩子:「 貼出來穩定不懂我要做啥的壓 XD」
卡卡米:「 那你繼續講ㄅ」
小孩子:「
foreach (RPC103 item in list)
{
string[] temp = { "SYS_P", "SYS_M", "SYS_S", "SYS_R", "SYS_UM", "SYS_PR", "SYS_MR", "SYS_Z", "SYS_1", "SYS_2", "SYS_3" };
foreach (string tempp in temp)
{
if (item.tempp == "Y")
{
item.tempp = "V";
}
else
{
item.tempp = "";
}
}
}」
小孩子:「 我想做的事」
小孩子:「 但是 tempp 不WORK」
小孩子:「 因為他在 RPC103 找不到這玩意」
卡卡米:「 蛤」
卡卡米:「 你想作的事情」
卡卡米:「 你再描述一次」
卡卡米:「 不要管code 講一下你的需求」
小孩子:「 我要對 Item裡面的資料 做一樣的動作」
小孩子:「 假設 item.SYS_P =Y 我要把它改成 V」
卡卡米:「 好 我知道你要幹麻了」
卡卡米:「 不是這樣寫」
卡卡米:「 但是我要查一下」
小孩子:「 大概就是知道 這個變數要怎麼寫 就WORK了吧」
小孩子:「 不然最蠢的方法就是重複寫N次 不過太蠢了」
卡卡米:「 http://stackoverflow.com/questions/1196991/get-property-value-from-string-using-reflection-in-c-sharp」
卡卡米:「 http://stackoverflow.com/questions/6445045/c-sharp-getting-all-the-properties-of-an-object」
卡卡米:「 關鍵字 是 reflection」
卡卡米:「 http://stackoverflow.com/questions/4291059/how-to-iterate-on-all-properties-of-an-object-in-c」
卡卡米:「 小孩子 : 幹」
卡卡米:「 http://www.jb51.net/article/25863.htm」
卡卡米:「 中文版的說明」
小孩子:「 改一半當機了」
小孩子:「 = =?」
小孩子:「 阿 好了」
小孩子:「 剛剛讀取中 幹」
小孩子:「 恩 WORK了」
卡卡米:「 改好的code貼過來給看一下壓」
小孩子:「 等等 我寫完整 我剛剛指定的變數WORK而已」
小孩子:「 感覺怪怪的」
小孩子:「
string[] temp = { "SYS_P", "SYS_M", "SYS_S", "SYS_R", "SYS_UM", "SYS_PR", "SYS_MR", "SYS_Z", "SYS_1", "SYS_2", "SYS_3" };
foreach (string tempp in temp)
{
if (item.GetType().GetProperty(tempp).GetValue(item, null) == "1")
{
item.GetType().GetProperty(tempp).SetValue(item, "V");
}
else
{
item.GetType().GetProperty(tempp).SetValue(item, "");
}
}
」
小孩子:「 重看一下你剛貼的好了 不太了GetProperty 做啥的」
卡卡米:「 你這樣寫有 work 嗎」
小孩子:「 監看式是得到1沒錯 可是感覺怪怪的」
阿哈:「 志榮在幹嗎阿」
小孩子:「 if (item.GetType().GetProperty(tempp).GetValue(item, null).ToString() == "1")」
小孩子:「 多加個 TOSTRING 就好了 = =」
卡卡米:「 是喔」
卡卡米:「 這麼ez 喔」
小孩子:「 莫名其妙」
小孩子:「 [2014年7月17日 下午 04:55] 小孩子:
<<< GetProperty 這是做啥的壓 看他說明還是不太了改」
卡卡米:「 GetValue 傳回的是 Object 吧」
小孩子:「 喔喔 可能喔」
卡卡米:「 中文就是 取得屬性」
卡卡米:「 你要先知道 GetType」
小孩子:「 取得他的TYPE壓 (誤」
卡卡米:「 Type 是類別」
卡卡米:「 Property 是類別下的屬性」
小孩子:「 OK」
卡卡米:「 不是針對某個物件」
小孩子:「 這樣WORK了 3Q拉」
卡卡米:「 所以他後面 GetValue 才要設定 是對 item 作」
小孩子:「 沒問的話 我就會做寫N次的蠢事了 只為了把1改成 Y之類的」
小孩子:「 = =」
卡卡米:「 沒叫你貼 code 的話大概你會跟我講30分鐘」
小孩子:「 奇怪押 GRIDVIEW就不用這麼麻飯」
卡卡米:「 我還不知道你要幹麻」
小孩子:「 麻煩」
小孩子:「 為什麼取 MODELS就這麼龜毛」
卡卡米:「 一般用法會是」
卡卡米:「 物件["屬性名稱"] = 值」
小孩子:「 喔 幹 對 = =」
小孩子:「 失智了 完全不知道我在做啥」
卡卡米:「 可是這樣的寫法 應該不是每個 class 都work的」
小孩子:「 恩 這方法才是萬能解了」
小孩子:「 把名字取好一點了 取temp真沒 sense」
卡卡米:「 http://blogs.msdn.com/b/csharpfaq/archive/2009/10/19/dynamic-in-c-4-0-creating-wrappers-with-dynamicobject.aspx」
卡卡米:「 看看這個吧」
小孩子:「 太多英文了 跳過 (誤」
卡卡米:「 http://blog.darkthread.net/post-2011-06-10-expandoobject.aspx」
卡卡米:「 中文的」
小孩子:「 恩 動態存取 太神拉~~」
小孩子:「 卡米: 蛤 看這麼快喔」
卡卡米:「 嗯我都還沒看完」
卡卡米:「 你就看完拉」
小孩子:「 速讀哥」
卡卡米:「 dynamic 以前是 script 語言的特性」
卡卡米:「 js 跟 as 都會這套」
小孩子:「 受教了」
小孩子:「 感恩壓感恩感恩 (任爸樣」
沒有留言:
張貼留言