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 に答える