C# 正确存储/显示Func的列表<;T、 TResult>;在课堂上
我有一个类需要提供一种方法来注册任意数量的C# 正确存储/显示Func的列表<;T、 TResult>;在课堂上,c#,class,delegates,lambda,C#,Class,Delegates,Lambda,我有一个类需要提供一种方法来注册任意数量的Func委托 然后在一系列操作中在我的类中调用这些函数 公开注册这些代理的能力的正确方法是什么?它只是IEnumerable,IList,ReadOnlyCollection的公共属性吗 这里是否有一些通常使用的特定模式 更具体地说 假设一个场景 public class Foo { public List<Func<Control, Func<bool>>> Conditions { get; set; }
Func
委托
然后在一系列操作中在我的类中调用这些函数
公开注册这些代理的能力的正确方法是什么?它只是IEnumerable
,IList
,ReadOnlyCollection
的公共属性吗
这里是否有一些通常使用的特定模式
更具体地说
假设一个场景
public class Foo
{
public List<Func<Control, Func<bool>>> Conditions { get; set; }
public void DoWork()
{
foreach (Func<Control, Func<bool>> condition in this.Conditions)
var result = condition.Invoke(new Control());
}
}
公共类Foo
{
公共列表条件{get;set;}
公共工作
{
foreach(此.Conditions中的Func条件)
var result=condition.Invoke(新控件());
}
}
这是一个可接受的实现吗?没有足够的信息。这将完全取决于您的情况,特别是您希望提供的合同担保(例如,担保订单、托收的不变性等)。除非您有特殊要求,否则我建议您只使用最简单的版本--
IEnumerable
,其余的留给您的实现。这就是我过去所做的
至于像您的示例中那样使用
列表
,这并没有本质上的错误。您可能会发现坚持使用IEnumerable
是很方便的,这样您就不会过度限制自己<代码>列表实现了IEnumerable
,因此在初始化时仍然可以使用条件=新列表
。没有足够的信息。这将完全取决于您的情况,特别是您希望提供的合同担保(例如,担保订单、托收的不变性等)。除非您有特殊要求,否则我建议您只使用最简单的版本--IEnumerable
,其余的留给您的实现。这就是我过去所做的
至于像您的示例中那样使用列表
,这并没有本质上的错误。您可能会发现坚持使用IEnumerable
是很方便的,这样您就不会过度限制自己<代码>列表实现了IEnumerable
,因此在初始化时仍然可以使用条件=新列表