正常函式呼叫是 :
//define
function(string a,string b,string c){.....}
//call method1
function("haha","hehe","hoho")
//call method2 這是C#自身支持的方式
function(a:"haha",c:"hehe",b:"hoho")
但是我想實作如下的方式:
string parm="a:'haha',c:'hehe',b:'hoho'"
function(parm)
parm 作為字串型變數。里面的賦值操作不限于上述表達
譬如目前我想到最簡易的做法就是
字串變數寫為 "{a:'haha',c:'hehe',b:'hoho'}"
JSON 反序列化成為物件再傳參
不知道是否有更取巧或者更好的解決方案?
uj5u.com熱心網友回復:
json就已經很香了。不過還有個dynamic,不需要寫物體類,但個人感徑訓是物體類更容易理解。uj5u.com熱心網友回復:
我覺得,你反而在緊耦合的道路上,越走越遠。。。uj5u.com熱心網友回復:
前端 CSS 都是 "background:red;border:1px black" 這種
我就是想知道 除了寫詞法分析器以外 ,還有沒有別的可行辦法.
uj5u.com熱心網友回復:
這個和Json幾乎是沒區別的。
而且很多前端框架都會采用Json的格式設定style
uj5u.com熱心網友回復:
Expression<func<T>>呼叫 xxx.call(()=>new {a=1,b=2})
當然怎么解這個Expression 就是另外一件事了(沒啥必要情況,我個人不想研究expression,就算偶爾會使用他,也只是簡單查一下資料,用完就忘)
ps:如果只是單純想拼接字串,上面那個直接dynamicobject,反射屬性就好,還不必折騰運算式決議
uj5u.com熱心網友回復:
其實你這種要求目前也有很多東西,你可以拿來直接用的隨便百度一下“json生成物體”“yaml生成物體物件”當然我們是在設計期用自動化工具生成代碼,而不想搞運行期動態代理因為運行期動態代理好歸好,只是要求上,他必須有統一的形式上的抽象。類似yaml插件,json配置,webapi提交,這類都會現有統一的形式上的約定,所以可以用動態代理,讓機器直接代理生成統一約定
ps:我個人不想用動態代理還有一個原因,難除錯。生成代碼,代碼就在那里,有問題可以調。動態代理出bug了,調都難調。畢竟代碼在運行期生效,他到底給我生成了啥,我也不知道。
uj5u.com熱心網友回復:
其實作在已經有這種傾向了,很多人用XX園推薦的框架,大搞動態代理和注入然后出問題了,過來問?我們也沒辦法回答,因為回答不了這類問題。
代理類給你動態生成的,他一旦不符合你的預期,我們也沒辦法處理,畢竟代碼都是憑空生成出來的,他要不符合預期,我們只能回答,去研究框架本身的內部機制把,我們無能為力
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/53970.html
標籤:C#
