Как реализовать объединение в цепочку метода?

В C#, как делает одну реализацию способность объединить методы в цепочку в пользовательских классах, таким образом, можно записать что-то вроде этого:

myclass.DoSomething().DosomethingElse(x); 

и т.д...

Спасибо!

6
задан Tony The Lion 13 January 2010 в 09:40
поделиться

4 ответа

цепи - это хорошее решение для создания нового экземпляра из существующих экземпляров:

public class MyInt
{
    private readonly int value;

    public MyInt(int value) {
        this.value = value;
    }
    public MyInt Add(int x) {
        return new MyInt(this.value + x);
    }
    public MyInt Subtract(int x) {
        return new MyInt(this.value - x);
    }
}

Использование:

MyInt x = new MyInt(10).Add(5).Subtract(7);

Вы также можете использовать этот шаблон Чтобы изменить существующий экземпляр, но это вообще не рекомендуется:

public class MyInt
{
    private int value;

    public MyInt(int value) {
        this.value = value;
    }
    public MyInt Add(int x) {
        this.value += x;
        return this;
    }
    public MyInt Subtract(int x) {
        this.value -= x;
        return this;
    }
}

Использование:

MyInt x = new MyInt(10).Add(5).Subtract(7);
14
ответ дан 8 December 2019 в 14:43
поделиться

Для мусорного класса что-то вроде

class MyClass
{
    public MyClass DoSomething()
    {
       ....
       return this;
    }
}
1
ответ дан 8 December 2019 в 14:43
поделиться

Ваши методы должны возвращаться это или ссылку на другой (возможно новый) объект в зависимости от именно то, что вы хотите достичь

0
ответ дан 8 December 2019 в 14:43
поделиться

DoSomething должен возвращать экземпляр класса с помощью метода DoSomethingElse.

1
ответ дан 8 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: