Ограничение существует, потому что макеты не могут изменить method1
, не будучи виртуальным или интерфейсом.Это разумное ограничение, так как интерфейсы позволяют разделить ваши зависимости и являются общей чертой хорошего кода, IMO.К сожалению, большинство .Net Framework не имеет виртуальных методов или интерфейсов ... что требует уродливой упаковки для создания интерфейсов.
Если вам это действительно не нравится, есть одна опция Mocking Framework,преодолевает ограничение, зацепляя CLR какой-то сумасшедшей магией foo.Эта фейерверк называется TypeMock Isolator .