1
這是parse.com Documentation說,關於子類ParseObjects:C#/ Unity parse.com子類化buggy?
[ParseClassName("Armor")]
public class Armor : ParseObject
{
[ParseFieldName("displayName")]
public string DisplayName
{
get { return GetProperty<string>(); }
set { SetProperty<string>(value); }
}
}
問題#1:這個例子是錯誤的;這兩種方法都需要一個propertyName
PARAM,所以這是我做的,而不是
[ParseFieldName("seed")]
public int Seed {
get { return GetProperty<int>("seed"); }
set { SetProperty<int>(value, "seed"); }
}
問題#2:這樣做,我得到以下異常:
ArgumentNullException: Argument cannot be null.
Parameter name: key
System.Collections.Generic.Dictionary`2[System.String,System.Object].ContainsKey (System.String key) (at /Users/builduser/buildslave/mono-runtime-and- classlibs/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:458)
Parse.ParseObject.ContainsKey (System.String key)
Parse.ParseObject.TryGetValue[Int32] (System.String key, System.Int32& result)
Parse.ParseObject.GetProperty[Int32] (Int32 defaultValue, System.String propertyName)
Parse.ParseObject.GetProperty[Int32] (System.String propertyName)
Example.get_Seed() (at Assets/Commons/Parse/Example.cs:10)
我沒有解析源代碼,所以我不能通過調試,但這看起來像一個bug(在一個非常基本的API)。所以我想知道;我做錯了什麼?我注意到,無論出於何種原因,還有一個Get<T>()
,但是也沒有運氣。
更新:我使用Parse.Unity 1.6.2.0
的例子是沒有錯,屬性名稱字段的默認值爲null,該方法使用「CallerMemberNameAttribute」來找出您嘗試檢索的屬性的名稱。但請注意,如果您傳入屬性名稱,則不應該中斷,但應該使用相同的大小寫('Seed',而不是'seed')。 –
所以,如果它沒有錯,爲什麼'方法沒有重載'GetProperty'需要0參數'編譯錯誤拋出我?爲什麼我應該使用相同的情況? C#名稱和解析名稱不必匹配,否則註釋將毫無用處,示例也完全一樣。 –
也許你有一個不支持可選參數的舊版Mono。 –