Делая «это» неявно динамичным - PullRequest
1 голос
/ 18 ноября 2010

У меня есть класс, который наследует от DynamicObject и переопределяет некоторые его члены.Мне было интересно, есть ли какие-нибудь хитрости, которые я мог бы использовать, чтобы сделать «это» неявно динамичным (или, по крайней мере, внешним видом), чтобы при необходимости динамического добавления членов внутри класса мне не пришлось бы делать

((dynamic)this).Whatever = 10;

Было бы намного лучше, если бы я мог сделать

Whatever = 10;

Я просто кое-что добавляю, поэтому не могу добавить к этому никакого реального контекста, и нет, Ruby не является решениемна этот раз;)

Я мог бы обернуть его в свойство, но это добавило бы к API функциональности, поскольку мне пришлось бы делать

Property.Whatever = 10;

Ответы [ 3 ]

4 голосов
/ 18 ноября 2010

Почему бы просто не расширить базовый класс?

public class DynamicObjectEx : DynamicObject
{
    protected dynamic self
    {
        get
        {
            return this;
        }
    }
}

Или вы можете просто переключиться на VB.NET с выключенной опцией или любым другим параметром; -)

1 голос
/ 18 ноября 2010

Это невозможно. Ваш подход с Property.Whatever - это путь.

0 голосов
/ 18 ноября 2010

Не проще ли было бы просто добавить их как нединамические атрибуты?Если вы используете «this» в своем классе, вы уверены, что эти атрибуты уже должны быть там, нет?

Я не знаю много о динамических классах, хотя, поправьте меня, если яЯ не прав!

...