, Как Вы обрабатываете эти виды ситуаций?
Круговые зависимости не по сути плохи. На самом деле это может иногда быть случаем "средства исправления, являющегося хуже, чем болезнь": извлечение интерфейса увеличивает уровень сложности Вашего кода и добавляет другой слой косвенности. Это, вероятно, не стоит того для очень простых отношений.
Я не думаю, что это сработает, потому что ASP.NET MVC так сильно полагается на рефлексию.
Я успешно запутал приложение ASP.NET MVC, используя SmartAssembly и поток управления- у него есть опция обфускации. Это не меняет имени членов вашего класса, а вместо этого меняет код в ваших методах на спагетти-код.
Это правда, что ASP. NET MVC в значительной степени полагается на отражение, поэтому вы не можете скрыть тип или свойства, которые будут отражены. Однако я бы сказал, что в любом случае нет необходимости скрывать большую часть этого материала. Имена ваших контроллеров и имена действий уже общедоступны, поскольку они появляются в URI. Ваши модели представления также являются общедоступными, поскольку они должны быть спроектированы так же, как ваше представление, и поскольку конечные пользователи могут видеть ваше представление.
Ваши контроллеры должны быть очень легкими и просто привязывать объекты из репозитория к вашим моделям представления. Так что здесь мало интеллектуальной собственности, которую можно скрывать.
Код, который вы действительно хотите запутать, вероятно, будет вашей бизнес-логикой, которая может очень легко жить в отдельной сборке.