Я не уверен, что вы пытаетесь сделать с помощью пользовательских реализаций Validation, ModelBinding и, возможно, ModelMetadata, чего нельзя сделать с помощью функциональности DependencyResolver в MVC?
Новыйподдержка лесов в недавнем обновлении Tooling Update для MVC 3 может удовлетворить ваши потребности в строительных лесах;однако я хотел бы взглянуть на возможное подключение к функциональности DependencyResolver для ModelBinding, ModelMetadata и Validation и посмотреть, смогут ли они достичь того, что вы ищете.Недавно у меня была похожая ситуация, когда мне нужно было реализовать многие из этих вариантов поведения с нуля, чтобы обеспечить гибкую структуру, и я смог сделать это только с поставщиками ModelMetadata и Validation, использующими IoC.В некоторых случаях я также унаследовал DynamicObject (или ExpandoObject), чтобы обеспечить еще большую гибкость.Я знаю, что это не совсем прямой ответ, но я не уверен, зачем вам нужен доступ к чему-то более низкому, чем эти точки расширения?
РЕДАКТИРОВАТЬ: Если вы хотите использовать повторноModelMetadata в похожих ViewModels, чтобы избежать необходимости переопределять одни и те же ModelMetadata в нескольких местах, вы можете рассмотреть последствия этого.Во многих случаях вам нужны определенные ограничения данных для ваших сущностей, но эти ограничения должны быть в DataModel, а не в ViewModel.Пользователь может иметь немного более строгие правила.Например, вы можете указать, что определенные поля доступны только для пользователя в ViewModel, но что сущность, используемая в качестве DataModel, позволяет вам изменять значение (как правило, из вашего кода).Точно так же вы можете столкнуться с ситуациями, когда ModelMetadata, использованный для создания представления Create для VideModel, может немного отличаться от ViewModel, используемого для представления Edit.Повторное их использование может показаться отличным способом сохранения согласованности и сокращения дублирования кода, но об этом вы можете пожалеть позже.Недавно я столкнулся с той же проблемой, где я хотел избежать написания новой ViewModel для каждого представления, которое может вызвать обратную передачу, я не нашел идеального решения, которое мне нравится, но я думаю, что повторное использование ModelMetadata вызовет больше проблем, которые он может решить вмое мнение.Написание ViewModels для представлений, которые в них нуждаются, также, вероятно, избавит вас от необходимости реализовывать собственную реализацию BindAttribute и проблему Scaffolding.Если я прав, предполагая, что не нужно создавать так много ViewModel с их собственными метаданными, это то, что заставляет вас пытаться найти реализации пользовательского BindAttribute, пользовательского Scaffolding, пользовательского ModelMetadata, пользовательского Validation и пользовательского ModelBinding ... это может стоитьпосмотрим, сколько времени на самом деле потребуется, чтобы просто создать ViewModels.
Если вы найдете лучший подход, не стесняйтесь, дайте мне знать: -)