Я использую C# для создания модели представления, которую я позже сериализую в Json для использования с KnockoutJs.Добавление свойств на основе лямбда-выражений
Теперь мне нужно добавить информацию об уровне собственности, если у определенного пользователя есть доступ для просмотра и/или редактирования свойства.
Поскольку Javascript имеет мало возможностей для отражения, я хочу сделать это с помощью C# перед сериализацией Json.
моего взгляд модель может выглядеть следующим образом:
class ViewModel {
public string Name { get; set; }
}
Я хочу использовать службу пользовательского доступа, которые будут принимать у пользователя, который имеет несколько ролей, и модель представления и пройти через роли и применить права доступа. Что-то вроде этого:
class AccessService {
public void Apply(IUser user, ViewModel viewModel) {
if(user.Roles.Contains(Roles.Admin)) {
viewModel.AllowRead(vm => vm.Name);
}
}
}
Метод viewModel.AllowRead(..)
будет метод расширения, который будет принимать object
(или, возможно, интерфейс или типа, если это необходимо), и это то, где магия будет.
Я хочу, чтобы результат этой операции состоял в том, что viewModel получит новое свойство с именем CanRead
, которое, в свою очередь, будет иметь логическое свойство с именем Name
.
В результате viewModel
будет выглядеть следующим образом:
class ViewModel {
public string Name { get; set; }
public object CanRead { // Could non anonymous as well.
return new {
Name = true;
};
}
}
Можно ли это сделать с динамикой или я должен использовать Reflection.Emit? Я не прошу «показать мне кодз». Я просто хочу знать, является ли моя идея ментальной или если это возможно.
Любые идеи?
Является ли это 'ViewModel', используемые в WPF? – user7116
Нет, он используется с KnockoutJs, который является MVVM для Javascript, следовательно, JSON. –