如何在StringTemplate中的对象上调用C#扩展方法?

时间:2014-08-07 18:32:28

标签: c# stringtemplate

我正在尝试根据集合中的项目数在StringTemplate中执行if ...我想这样做:

$ if(length(myCollection)> 1)$

但是,这被认为是逻辑,因此被禁止(StringTemplate无法识别>运算符)。

但是,StringTemplate会反映出一种扩展方法吗?

我的扩展方法如下所示:

public static bool IsMoreThanOne(this ICollection list)
{
    return list.Count > 1;
}

如果我的模板如下:

$if(myCollection.MoreThanOne)$

如果它是“第一顺序”方法(意思是“myCollection”对象),那将找到该方法。但它不是 - 它是一种扩展方法,所以它似乎没有用。

1 个答案:

答案 0 :(得分:0)

对于这个特定逻辑,你可以使用下面的表达式,基本上说“如果我们跳过第一个项目,剩下的集合是否包含任何项目?”:

$if(rest(myCollection))$

通常,您可以创建IModelAdaptor的实现,该实现支持访问对象的特定属性。如果您的实施范围扩展为ObjectModelAdaptorMapModelAdaptor,那么对于您自己未处理的任何属性,您可以回退到return base.GetProperty(...)