簡體   English   中英

我將如何獲得等效的C#代碼,以其當前狀態重新創建運行時對象?

[英]How would I get the equivalent C# code that will recreate my runtime object in its current state?

是否有任何.Net庫可以接受對象並將其序列化為Stream,就像創建對象的C#代碼一樣?

Stream fs = ...;

CSharpFormatter formatter = new CSharpFormatter();

var p = new Person { Name = "Russ", Address = "1024 Oak St" };

formatter.Serialize(fs, p);

在此結束時,fs將以這樣的字符串結尾:

new Person { Name = "Russ", Address = "1024 Oak St" };

我認為類似這樣的事情對於在棘手的運行時案例中編寫單元測試非常有用。

您可能會破解JSON序列化程序來執行此操作。 給定您的Person對象,JSON序列化器可能返回以下內容:

{"name":"Russ","Address":"1024 Oak St"}

從那里開始,使用Split()Replace()可以很輕松地接近所需的內容:

{ Name = "Russ", Address = "1024 Oak St" }

剩下的只是窗簾。

只有部分答案,但是您可以使用System.CodeDom命名空間中的類來創建代碼(如本示例) ,然后使用CSharpCodeProvider類中的GenerateCodeFromXXX方法發出C#。

另一種方法是使用T4文本模板 ,例如本演練 和反射,但它需要Visual Studio。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM