Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正确存储/显示Func的列表<;T、 TResult>;在课堂上_C#_Class_Delegates_Lambda - Fatal编程技术网

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
,因此在初始化时仍然可以使用
条件=新列表