Как я могу указать контракты кода для существующего кода платформы (BCL)?

Контракты кода отлично работают до тех пор, пока вам не придется добавить bazillion Contract.Assume (...) для результатов выходит из кода фреймворка. Например, MemoryStream.ToArray () никогда не возвращает нулевой массив, насколько я могу судить, глядя на него в Reflector, но он не задокументирован как контракт, поэтому я должен Assume он везде.

Есть ли волшебный способ создать библиотеку контрактов для уже существующих функций? Я предполагаю, что как только вы получите несколько десятков наиболее часто используемых функций фреймворка, предупреждения станут гораздо более приятными.

9
задан Sebastian Good 12 October 2010 в 19:55
поделиться