Я хочу иметь простой пример набора текста на C # с использованием динамических объектов. Мне кажется, что динамический объект должен иметь методы HasValue / HasProperty / HasMethod с одним строковым параметром для имени значения, свойства или метода, которые вы ищете, прежде чем пытаться с ним работать. Я стараюсь избегать блоков try / catch и, если возможно, более глубокого размышления. Просто кажется, что это обычная практика для утиной печати на динамических языках (JS, Ruby, Python и т. Д.), То есть проверка свойства / метода перед попыткой его использования, а затем возврат к значениям по умолчанию или выдача управляемого исключения. . Пример ниже - это в основном то, что я хочу достичь.
Если методы, описанные выше, не существуют, есть ли у кого-нибудь готовые методы расширения для динамических, которые будут делать это?
Пример: в JavaScript я могу довольно легко проверить метод объекта.
//JavaScript
function quack(duck) {
if (duck && typeof duck.quack === "function") {
return duck.quack();
}
return null; //nothing to return, not a duck
}
Как мне сделать то же самое на C #?
//C# 4
dynamic Quack(dynamic duck)
{
//how do I test that the duck is not null,
//and has a quack method?
//if it doesn't quack, return null
}
Duck.HasFunc<TRet, T1>(string name)
в качестве примера подписи ... Я не использую C # на этом уровне уже нет, но было бы интересно. - person Tracker1   schedule 12.08.2015