创建迭代列表以执行操作的方法

时间:2016-03-20 21:33:22

标签: c# list

我有一个名为IEvent的接口和一个List [IEvent]。有没有办法可以创建一个方法,对该列表的每个元素执行一个操作,而不必创建一个单独的类?从我所读过的内容来看,继承通用列表是一个坏主意,我也不认为扩展方法也是合适的。例如:

<script type="text/javascript">
        $(document).ready(function() {
            $('#test-delete-link').click(function(){
                $.ajax({
                    type: 'DELETE',
                    url: '/app/delete/{{test.testId}}'
                });
            });
        });
    </script>

2 个答案:

答案 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