1

在 lua 中,可以很容易地创建一个表并向其添加函数。

我如何在 C# 中做到这一点?我的第一个想法是使用委托列表并用匿名函数填充列表,但我无法正确使用语法。

public class PlanItem
{
    public string Name { get; set; }   
    public List<BusinessRule> Rules;
}

public delegate bool BusinessRule(PlanItem item);

[Test]
public void TestIt()
{
    PlanItem item = new PlanItem();
    item.Rules.Add(
        BusinessRule(PlanItem item)
        {
            return !string.IsNullOrEmpty(item.Name);
        }
    );

   foreach(BusinessRule rule in item.Rules)
   {
     if(!rule(item))
         // write uh-oh
   }
}
4

3 回答 3

3

这应该可以解决问题:

 item.Rules.Add((planItem) => 
 { 
     return !string.IsNullOrEmpty(planItem.Name); 
 });
于 2012-05-21T21:02:57.267 回答
1
public void TestIt()
{
    PlanItem item = new PlanItem();
    item.Rules.Add( (item) => {  !string.IsNullOrEmpty(item.Name); });
    item.Rules.ForEach( (rule) => { if(!rule(item) uhOh(item, outputStream);} );
}
于 2012-05-21T21:11:02.113 回答
1

在没有匿名委托的 C# 2.0 中:

BusinessRule rule = delegate(PlanItem planitem) {
    return !string.IsNullOrEmpty(planitem.Name);
};
item.Rules.Add(rule);
于 2012-05-21T21:21:44.307 回答