如何在StringTemplate中的对象上调用c#扩展方法?
本文关键字:调用 扩展 方法 对象 StringTemplate | 更新日期: 2023-09-27 18:16:54
我想做一个if…然后在StringTemplate中基于集合中的项数。我想这样做:
$if(length(myCollection)> 1)$但是,这被认为是逻辑操作,因此是被禁止的(StringTemplate不能识别>操作符)。
但是,StringTemplate会反映出一个扩展方法吗?
我的扩展方法是这样的:
public static bool IsMoreThanOne(this ICollection list)
{
return list.Count > 1;
}
如果我的模板是这样的:
$if(myCollection.MoreThanOne)$
如果该方法是"一阶"方法(意思是在"myCollection"对象上),则会找到该方法。但它不是——它是一个扩展方法,所以它似乎不起作用
对于这个特定的逻辑,您可以使用以下表达式,它基本上表示"如果我们跳过第一个项,剩余的集合是否包含任何项?":
$if(rest(myCollection))$
一般来说,你可以创建一个IModelAdaptor
的实现,它支持访问你的对象的特定属性。如果你的实现扩展了ObjectModelAdaptor
或MapModelAdaptor
,你可以回到return base.GetProperty(...)
处理任何你不自己处理的属性。