[英]How can I access a non-static member in a static event handler?
我已經知道您通常無法執行此操作,但這是我的情況:
我有一個非靜態的List<T>
,在正常使用期間會添加到該List<T>
,然后每隔一段時間就轉儲到數據庫中。 我希望能夠使用AppDomain.CurrentDomain.ProcessExit
來轉儲List<T>
中尚未轉儲的任何值。 List
在每次轉儲時都會清除。
即使List
是靜態的->非靜態的,我也可以在沒有給定上下文的情況下訪問此List
嗎?
只需將您的處理程序添加為lambda,就可以訪問您的列表。
var list = new List<string>()
{
"Item 1",
"Item 2"
};
AppDomain.CurrentDomain.ProcessExit += (sender, theArgs) =>
{
File.WriteAllLines(@"C:\temp\mylist.txt", list);
};
一種不錯的方法是將這種行為封裝在List<T>
的子類中。
public class MyReallyPersistentList<T> : List<T>
{
public MyReallyPersistentList()
{
AppDomain.CurrentDomain.ProcessExit += (sender, args) =>
{
var items = this.Select(i => i?.ToString());
File.AppendAllLines(@"C:\temp\mylist.txt", items);
};
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.