2010-04-09 4 views
2

Я очень впечатлен MonoTouch.Dialog от Miguel. вдохновленный его простым подходом, я подумал, что было бы очень хорошо иметь класс NSUserDefaults, основанный на отражении, который работает без проблем, отмечая определенные свойства как «устойчивые по умолчанию пользователя» и забывая обо всем остальном. что-то вроде этого:NSUserDefaults in monotouch

public class SomeController 
    { 
     [PersistInUserSettings] 
     public string LastPostUserRead { get; set; } 
    } 

Я не люблю LastPostUserRead быть типа «UserSetting», мне нравится быть нормальным свойство, так что позже я могу назначить ему нравится:

LastPostUserRead = "Post 1"; 

и не нравится:

LastPostUserRead.SetValue("Post 1"); 

Любая идея о том, как реализовать его (без Reflection.Emit) в MonoTouch?

ответ

1

Вам не требуется Reflection.Emit вообще для динамического задания значений. Это чистая System.Reflection (без части «Emit»).

MonoTouch.Dialog фактически считывает и сохраняет значения динамически с использованием SetValue и GetValue из поля FieldInfo (может быть сделано и для свойств).

+0

afaics привязка является одним из способов (в диалоге), если я устанавливаю значение связанного поля во время отображения диалогового окна, элемент интерфейса, связанный с этим полем, не будет обновляться. я что-то упускаю? –

+1

Да ali - вам нужно использовать bindingContext.Fetch(). См. Http://github.com/migueldeicaza/MonoTouch.Dialog/blob/master/Sample/DemoReflectionApi.cs для примера, я не уверен, что вики упоминают, что вы должны это делать –

Смежные вопросы