Можете ли вы автоматически передать «это» в качестве параметра?

Есть ли возможность автоматически передать this как параметр функции? Например, вы можете использовать [CallerMemberName] для автоматического передачи имени string . Я ищу точный вариант с this .

Пример:

void PassMeThis([AutomaticThisParam] object source);

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

public class SomeClass{    
    void SomeMethod(){
        PassMeThis(); // instead of PassMeThis(this)
    }
}

Всего 2 ответа


Да, конечно. Это называется методом расширения.

  1. Создание статического класса Public static class MethodExtensions

  2. Добавьте к нему статический метод, как этот public static PassMeThis(this SomeClass model) { // }

  3. Вызовите метод, подобный этому (ссылаясь на ваш пример кода): this.PassMeThis()

И он автоматически заполняется. Надеюсь, именно то, что вы искали


Если PassMeThis находится в том же классе (или предке), как в вашем примере, нет смысла, это тоже возможно.

Если он находится в другом классе , нет возможности автоматически получить ссылку на вызывающий объект: существует ли способ получить ссылку на вызывающий объект в c #?


Есть идеи?

10000