[英]How can I save lines of C# code into a string?
我正在編寫一系列測試來驗證我正在編寫的代碼。 我希望測試文檔列出測試如何發現錯誤。 而不是確保文檔得到更新與測試我想 output 代碼行。 有沒有辦法將它保存在字符串中?
代碼如下所示:
string Date = String.Format("Name = {0}, hours = {1:hh}", name, DateTime.Now);
string Code = ""Name = {0}, hours = {1:hh}", name, DateTime.Now"
將評估Date
,而Code
將是文字字符串。 就像是:
string Date = string.Format(Code);
我認為你最好使用服務來記錄它。但我仍然會給你一個解決方案。 您可以使用委托來記錄當前狀態(它是一個閉包),並且當您需要它時,您可以調用它並獲取它的返回值。 像這樣做:
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
var john = new Producer();
var log = john.Produce();
Console.WriteLine($"John's log is \"{log()}\"");
}
}
class Producer
{
public Func<string> Produce()
{
var name = "John";
Console.WriteLine("John is producing.");
return () =>
{
return $"Name = {name}, hours = {DateTime.Now:hh}";
};
}
}
}
Output:
John is producing.
John's log is "Name = John, hours = 08"
我相信您可以使用新的C# 9.0 代碼生成器來做到這一點。 它們允許您進行自動代碼重寫,例如注入與您的用例類似的日志調用。
這是一本包含一些“代碼重寫”食譜的食譜:
https://github.com/dotnet/roslyn/blob/master/docs/features/source-generators.cookbook.md
我是代碼生成器的新手,它們仍處於預覽狀態(。)所以我不知道你想要的是否真的可能,但至少是檢查代碼並在每行基礎上增加它的一般想法(在你的通過從代碼行中創建一個字符串並執行它)看起來就像代碼重寫生成器可以用於什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.