Я тоже думаю, что на других платформах нет понятия DLL и всякие DllImport для них не будут поддерживаться. Лучше воспользоваться неким ResourceExtractor для того, чтобы вытащить ресурсы и использовать уже Managed Resources.
Умею. Про это я знаю и сам так делал не раз. Это наверное единственное, что можно сделать, и то это "полу"-решение, хотя используется часто. Можно конечно понавешать ещё атрибутов, но опять-таки - нужно использовать вспомогательные классы и обработки, которые будут учитывать эти атрибуты.
Я лишь писал, что смысл критики в ограниченности семантики обычных enum.
Антон, сама N-layered архитектура уже давно известна (есть даже книжка от MS - прямую ссылку дать не могу, но можно спросить у гугла "n-layered domain-oriented architecture guide with .net pdf").
Единственно верного решения, наверное, на данный момент не существует. Проблемы с паттерном "Репозиторий" я вам описал - есть лучше разделить на CUD-объекты (ваш репозиторий) и Query-объекты - для более сложных выборок.
Методы (SetUserValid, SetUserInvalid, SetUserFail) я думаю плодить не стоит. Ведь скорее всего у вас состояние пользователя выражено в каком-то enum, которое действительно лучше проставить в доменном объекте, на основе логики приложения.