求助大神
我有個Case, 需要讀取.cs檔案 并且將檔案中的某方法MethodA根據一定邏輯 分別拆分到MethodB和MethodC中去;
目前使用StreamReader.ReadLine() 對.cs檔案一行行讀取;且將讀取到的MethodA的每行存盤到List<string>中;
請給一些建議,怎么進行差分? 大概就是把 completed(true...)相關的代碼提取出來放到MethodC中去, 剩下的completed(false...)相關的放在MethodB里面!

private void MethodA(Dictionary<string, string> param, Action<bool, Dictionary<string, object>> completed)
{
string ababab = string.Empty;
bool checkResult = param == null ? false : param.Count > 0 ? true : false;
Dictionary<string, object> commonParam = new Dictionary<string, object>();
if (null != param && param.Values.Count != 0 && param.ContainsKey("isAutoFreshFlag"))
{
commonParam.Add("isAutoFreshFlag", true);
}
if (checkResult)
{
commonParam.Add("Test", "Content");
completed(true, commonParam);
}
else
{
completed(false, null);
}
}
private bool MethodB(Dictionary<string, string> param)
{
string ababab = string.Empty;
bool checkResult = param == null ? false : param.Count > 0 ? true : false;
if (checkResult)
{
}
else
{
return false;
}
//if (!checkResult)
//{
// return false;
//}
return true;
}
private Dictionary<string, object> MethodC(Dictionary<string, string> param)
{
Dictionary<string, object> commonParam = new Dictionary<string, object>();
if (null != param && param.Values.Count != 0 && param.ContainsKey("isAutoFreshFlag"))
{
commonParam.Add("isAutoFreshFlag", true);
}
commonParam.Add("Test", "Content");
return commonParam;
}
uj5u.com熱心網友回復:
來個大神給點建議唄~ 是不是我表達的不夠明白啊 - -、
uj5u.com熱心網友回復:
把A的兩部份代碼(紅圈部分)封裝成兩個方法,B和C分別呼叫相應的方法。uj5u.com熱心網友回復:
Using the CodeDOM | Microsoft Docshttps://docs.microsoft.com/en-us/dotnet/framework/reflection-and-codedom/using-the-codedom
uj5u.com熱心網友回復:
是啊~
但問題就在于怎么把紅框里的面代碼抽出來呀, MethodA 是我從 .cs檔案里面一行行讀出來的; 1-23行我讀完保存在 List<string>里面了;
其實我實際要做的功能是,復制一個.cs檔案,這個檔案里面有個MethodA 方法, 我復制程序中 要把MethodA 拆成 MethodB和MethodC;
uj5u.com熱心網友回復:
這是代碼生成嗎?不明覺厲。看樣子不能用簡單的匹配來解決,樓上說的 CodeDOM 好像挺有道理,可以參考參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/208884.html
標籤:C#
