這個問題在這里已經有了答案: 如何保護 List 的 Add 方法,同時使用 get 屬性公開 List? (7 個回答) 17 小時前關閉。
我有以下課程
public class Workflow
{
public List<IActivity> Activities { get; } = new List<IActivity>();
public void Add(IActivity activity)
{
Activities.Add(activity);
}
}
現在,想法是只能使用 Add 方法添加活動。但我還需要能夠閱讀它們,以便我可以執行它們。
現在看程式:
class Program
{
static void Main(string[] args)
{
var workflow = new Workflow();
//I want this to work and it works
workflow.Add(new UploadVideoActivity());
//I want this to not work, but it works.
workflow.Activities.Add(new UploadVideoActivity());
WorkflowEngine.Run(workflow);
}
}
我是否能夠創建List<T>允許我們僅使用該方法向其添加專案但可以從類中讀取的屬性?
uj5u.com熱心網友回復:
您可以在List<IActivity>內部使用但將其公開為IReadOnlyList<IActivity>屬性,因此無法從類外部修改它:
public class Workflow
{
private readonly List<IActivity> activities = new();
public IReadOnlyList<IActivity> Activities => activities;
public void Add(IActivity activity)
{
activities.Add(activity);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/392604.html
