У меня была та же проблема с немного другим решением.
(Очевидно, это старый пост, но для тех, кто нашел этот вопрос, как я, и оригинальный ответ не помог ...)
Я думаю, что вполне разумно сказать, что каждый объект, на который ссылаются ваши сигнатуры интерфейса, должен быть помечен как сериализуемый. Иногда в простых проектах мы не думаем об этом, потому что многие (или большинство?) Нативных объектов .NET, с которыми мы играем, уже имеют эту возможность. Например, «ObjId as Guid» не вызовет проблем в подписи для члена, реализующего интерфейс.
Проблема, с которой я столкнулся, заключалась в том, что у меня было несколько пользовательских объектов ("Class1, Class2 и т. Д.) В качестве свойств объекта, на который фактически ссылалась моя подпись. У этого объекта (скажем, MyMainClass) был установлен атрибут, но мой объекты пользовательских свойств этого не сделали. Как только я добавил атрибут в эти классы, показанная выше ошибка исчезла.