我有一个名为IEvent的接口和一个List [IEvent]。有没有办法可以创建一个方法,对该列表的每个元素执行一个操作,而不必创建一个单独的类?从我所读过的内容来看,继承通用列表是一个坏主意,我也不认为扩展方法也是合适的。例如:
<script type="text/javascript">
$(document).ready(function() {
$('#test-delete-link').click(function(){
$.ajax({
type: 'DELETE',
url: '/app/delete/{{test.testId}}'
});
});
});
</script>
答案 0 :(得分:3)
是的,您可以使用扩展方法:
public static class ListExtensions
{
public static void Execute(this IList<IEvent> eventList)
{
foreach (IEvent myEvent in eventList)
{
myEvent.Execute();
}
}
}
现在,IList<IEvent>
的任何实例都可以调用此方法,就好像它是IList<IEvent>
的一部分一样:
listOfIEvent.Execute();
我的建议是您应该延长IEnumerable<IEvent>
,并且自IList<T>
实施IEnumerable<T>
以来,您无论如何都可以调用整个扩展方法:
public static class IEnumerableExtensions
{
public static void Execute(this IEnumerable<IEvent> eventList)
{
foreach (IEvent myEvent in eventList)
{
myEvent.Execute();
}
}
}
答案 1 :(得分:0)
实际上并非如此。一切都应该在课堂上。但最简单的是你可以做的 - 将该方法实现为extension。