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

如何编写与基类一起使用的扩展方法

如何解决《如何编写与基类一起使用的扩展方法》经验,为你挑选了1个好方法。

想法是扩展我的功能的扩展方法.

所以不要有这样的东西:

 return Add(Add(storage.GetFirst(), 3), 7);

我想要这样的东西:

return storage.GetFirst().Add(3).Add(7);

扩展方法的问题是它们必须在静态类中是静态的.这是我想要做的简化示例.

 public class Storage
    {
        public int GetFirst()
        {
            return 100;
        }
        public int GetAll(int x, int y)
        {

            // ... 
            return x + y;
        }
    }
    public abstract class MyBase
    {
        protected Storage storage;
        protected MyBase()
        {
            storage = new Storage();
        }

        public int Add(int what, int howMuch)
        {
            return storage.GetAll(what, howMuch);
        }

    }

    public class MyClass : MyBase
    {
        public int method1()
        {
            return Add(Add(storage.GetFirst(), 3), 7);

            //I want have something like this:
            // return storage.GetFirst().Add(3).Add(7);
        }
    }

课程类别Storage,MyBase和MyClass不能是静态的.逻辑是简化的,有简洁的例子,所以类之间的关系必须保持不变.我想要做的是使Add方法成为扩展方法,但保留其他所有"更不一样".

这可能吗?怎么做?



1> Manuel Zelen..:

另一种解决方案是让您的Storage类实际存储一些东西:

public class Storage
{
    private int currentValue;

    public Storage GetFirst()
    {
        this.currentValue = 100;
        return this;
    }

    public Storage Add(int toAdd)
    {
        this.currentValue += toAdd;
        return this;
    }

    public int GetResult()
    {
        return this.currentValue;
    }
}

这样你的电话会是:

int result = new Storage().GetFirst().Add(3).Add(5).GetResult();

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