【发布时间】:2022-01-25 04:47:06
【问题描述】:
我有以下课程
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> 属性,允许我们仅使用方法向其中添加项目,但可以从类中读取?
【问题讨论】:
-
推荐阅读:Guidelines for Collections。您可以维护一个本地(私有)
List<T>,但公开一个您从该属性返回的ReadOnlyCollection<t> -
删除项目或替换项目怎么样?是否可以直接对列表进行其他类型的修改?
标签: c# properties