我不認爲Azure的移動服務SDK(特別是離線同步內容)中具有即用型模型/屬性驗證。Azure移動服務的客戶端模型驗證
可以在服務器上執行驗證,但我們也想在客戶端上執行驗證和清理,就像爲Web應用程序所做的那樣。
所以我們習慣在客戶端使用類似sqlite-net
(或類似的東西)的東西不可用。對於例如
[Max(42)]
public int Foo { get; set; }
[Min(1)]
public int Bar { get; set; }
[Required]
[MaxLength(42)]
public string Baz { get; set; }
// and so on
所以我們需要做一些自定義的事情。驗證屬性本身是容易實現的,是這樣的:
[AttributeUsage (AttributeTargets.Property)]
public class MaxAttribute : Attribute {
public int Value { get; private set; }
public MaxAttribute (int value) {
Value = value;
}
}
但需要這些類型的屬性,而被檢查的地方,我不知道在那裏會是一個好地方。
對於CRUD操作和推拉同步有異步調用。人們還需要考慮模型/屬性驗證失敗後會發生什麼情況,並推測中止推進。但是由於存在簡單的批量推送攔截器,這取決於是否使用「同步處理程序」,因此會變得棘手。
我從來沒有必要寫我自己的驗證到現在。因此,對於那些做過類似工作的人... 哪裏可以做一個檢查這些屬性的好地方?
也許有一種方法可以使用'System.ComponentModel.DataAnnotations',但我懷疑這是PCL,所以probbaly在Xamarin移動應用程序中不起作用。 –
如果您編寫自定義本地商店,則可以在那裏進行更新驗證。在同步處理程序中進行驗證可能太晚了,因爲用戶已經進行了更改並且現在想要同步它們。爲什麼不在UI本身進行驗證? –