当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中将接口实现委托给其他类

如何解决《如何在C#中将接口实现委托给其他类》经验,为你挑选了1个好方法。

假设以下课程:

public class MyEnum: IEnumerator
{
    private List _myList = new List();
...
}

有必要在MyEnum中实现IEnumerator方法.但是,是否可以将IEnumerator的实现直接"委托"或重定向到_myList而无需实现IEnumerator方法?



1> Jorge Ferrei..:

方法1: 继续使用封装并将调用转发到List实现.

class SomeObject
{
}

class MyEnum : IEnumerable
{
    private List _myList = new List();

    public void Add(SomeObject o)
    {
        _myList.Add(o);
    }

    public IEnumerator GetEnumerator()
    {
        return _myList.GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return this.GetEnumerator();
    }
}

class Program
{
    static void Main(string[] args)
    {
        MyEnum a = new MyEnum();
        a.Add(new SomeObject());

        foreach (SomeObject o in a)
        {
            Console.WriteLine(o.GetType().ToString());
        }

        Console.ReadLine();
    }
}

方法2: 从List实现继承,您可以免费获得该行为.

class SomeObject
{
}

class MyEnum : List
{
}

class Program
{
    static void Main(string[] args)
    {
        MyEnum a = new MyEnum();
        a.Add(new SomeObject());

        foreach (SomeObject o in a)
        {
            Console.WriteLine(o.GetType().ToString());
        }

        Console.ReadLine();
    }
}

方法1允许更好的沙盒,因为在没有MyEnum知识的情况下没有将在List中调用的方法.最少努力方法2是优选的.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有