Contratos de código: como lidar com interfaces herdadas?

Estou usando o MS Code Contracts e encontrei um problema ao usar a herança de interface e os atributos ContractClassFor.

Dadas essas interfaces e classes de contrato:

[ContractClass(typeof(IOneContract))]
interface IOne { }
[ContractClass(typeof(ITwoContract))]
interface ITwo : IOne { }

[ContractClassFor(typeof(IOne))]
abstract class IOneContract : IOne { }
[ContractClassFor(typeof(ITwo))]
abstract class ITwoContract : IOneContract, ITwo { }

Digamos que IOne e ITwo sejam interfaces substanciais. Portanto, o IOneContract teria uma quantidade significativa de código para as verificações necessárias.

Não quero duplicar tudo isso no ITwoContract para as interfaces IOne. Eu só quero adicionar novos contratos para as interfaces ITwo. Herdar uma classe de contrato de outra parece ser a maneira provável de reutilizar esse código. No entanto, recebo o seguinte erro:

EXEC : warning CC1066: Class 'ITwoContract' is annotated as being the contract for the interface 'ITwo' and cannot have an explicit base class other than System.Object.

Isso é uma limitação nos contratos de código ou estou fazendo errado? Temos muita herança de interface em nosso projeto e isso parece um rompimento de acordos para contratos de código, se eu não conseguir descobrir como solucionar esse problema.

questionAnswers(1)

yourAnswerToTheQuestion