亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法在 CodeDom 的另一個方法中生成本地方法?

有沒有辦法在 CodeDom 的另一個方法中生成本地方法?

C#
臨摹微笑 2022-06-19 09:54:16
我正在使用 CodeDom 創建代碼。但是,CodeDom 不支持 lambda 語句。所以我現在試圖通過創建一個本地方法來模仿 lambda 語句,并將該方法作為參數傳遞給另一個方法。像這樣:public string MainMethod(string myParameter){    string g() { return instance.MainMethod(myParameter); }    return someOtherMethod(g);}使用 CodeDom 已經生成了方法“MainMethod”,我正在嘗試在其中獲取本地方法。但是,到目前為止,我找不到辦法做到這一點。我可以使用一些幫助。我已經嘗試將 CodeMemberMethod 添加到 CodeMemberMethod 但似乎沒有辦法做到這一點。我似乎找不到任何替代方案。目前我的 CodeDom 代碼使用 MethodInfo 作為基礎:var method = new CodeMemberMethod();method.Name = methodInfo.Name;method.ReturnType = new CodeTypeReference(methodInfo.ReturnType);//left out parameter stuffvar gMethod = new CodeMemberMethod() { Name = "g", ReturnType = new CodeTypeReference(methodInfo.ReturnType) };gMethod.Statements.Add(new CodeMethodReturnStatement(new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(new CodeVariableReferenceExpression("instance"), methodInfo.Name), parameterReferences.ToArray())));method.Statements.Add(gMethod);現在,痛苦在最后一個陳述中。我實際上是在嘗試將 CodeMemberMethod 添加到 CodeMemberMethod,但 Statements 屬性不允許這樣做。有沒有辦法以另一種方式做到這一點?
查看完整描述

1 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

在 C# 版本 7 之前,本地函數不是受支持的語言結構。 CodeDOM 的設計要早得多,并且不涵蓋所有 C# 功能,即使是當時的 C# 版本也是如此。換句話說,不幸的是,沒有辦法聲明一個“本地方法”并將其添加到Statements另一個方法的集合中。

相反,請考慮聲明一個單獨的private方法。你的類的公共接口將不受影響,并且很可能你會實現你想要的。但是,不能隱式訪問“外部方法”的參數。

另外,請考慮查看此答案以獲取更多想法。


查看完整回答
反對 回復 2022-06-19
  • 1 回答
  • 0 關注
  • 134 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號