В моей библиотеке есть методы, возвращаемое значение которых никогда не должно быть отброшено. Утечка их - очень популярная ошибка даже для меня, автора. Поэтому я хочу, чтобы компилятор предупреждал программиста, когда он это делает.Убедитесь, что возвращаемое значение метода не выбрано для библиотеки
Такое значение может быть сохранено или использовано в качестве аргумента для другого метода. Это не строго использовать сохраненное значение, но если оно просто отбрасывается, это 100% ошибка.
Есть ли какой-либо простой способ настроить это для моих пользователей библиотеки?
var x = instance.Method(); // ok
field = instance.Method(); // ok
instance.OtherMethod(instance.Method()); // ok
MyMethod(instance.Method()); // ok, no need to check inside MyMethod
instance.Method(); // callvirt and pop - error!
Я думал о том, IL анализатор для события после построения, но он чувствует, как так усложненной ...
Какую цель вы пытаетесь достигнуть? Является ли 'var x = instance.Method();' лучше, чем 'instance.Method();', в сценариях, когда переменная 'x' никогда не читается после назначения? Как насчет вызова метода через отражение и игнорирования возвращаемого значения? – dasblinkenlight
@dasblinkenlight 1) Цель состоит в том, чтобы предотвратить ошибки, которые трудно отлаживать. 2) дело не в безопасности, а в отражении нормально – Vlad
Я заставил себя один раз, используя параметр out для такого случая. Не красиво, но работает. – Stefan