次のコードを検討してください。
private static void Main(string[] args)
{
var person = new Person { Manager = new Manager { Name = "Shahrooz" }, Name = "Sina" };
Console.WriteLine("I am {0} my manager is {1}", person.Name, person.Manager.Name);
//Outpu:I am Sina my manager is Shahrooz
var newManager = person.Manager;
person.Manager = null;
new Thread(() => File.WriteAllText( Path.Combine("C:\\", string.Format("{0}.txt", person.Name)), new JavaScriptSerializer().Serialize(person))).Start();
Console.WriteLine("I am {0} my manager is", person.Name);
person.Manager = newManager;
Console.ReadLine();
}
}
public class Person
{
public string Name { get; set; }
public Manager Manager { get; set; }
}
public class Manager
{
public string Name { get; set; }
}
でオブジェクトをシリアライズしようとしていますJavaScriptSerializer
。シリアル化する前に、人のマネージャーを null に設定しましたが、テキスト ファイルで素晴らしい結果が得られます。
{"Name":"Sina","Manager":{"Name":"Shahrooz"}}
混同しました。私を助けてください。
アップデート:
私は自分のコードを変更します.それは大丈夫です:
internal class Program
{
private static void Main(string[] args)
{
var person = new Person { Manager = new Manager { Name = "Shahrooz" }, Name = "Sina" };
Console.WriteLine("I am {0} my manager is {1}", person.Name, person.Manager.Name);
//Outpu:I am Sina my manager is Shahrooz
var x = person.Manager;
person.Manager = null;
add(person);
Console.WriteLine("I am {0} my manager is", person.Name);
person.Manager = x;
Console.ReadLine();
}
public static async void add(Person person)
{
await AddToFile(person);
}
private async static Task AddToFile(Person person)
{
File.WriteAllText(Path.Combine("C:\\", string.Format("{0}.txt", person.Name)), new JavaScriptSerializer().Serialize(person));
}
}
public class Person
{
public string Name { get; set; }
public Manager Manager { get; set; }
}
public class Manager
{
public string Name { get; set; }
}