我有一個名爲「Comment」的類型,我將其保存到Azure表存儲。由於評論可以是關於任何其他類型的,所以我創建了一個所有這些類型實現的接口,然後在評論中放置一個ICommentable類型的屬性。所以Comment有一個名爲About的ICommentable類型的屬性。Azure表存儲拒絕具有其值爲接口的屬性的實體
當我嘗試將評論保存到Azure表存儲時,如果Comment.About屬性具有值,則會收到無用的無效輸入錯誤。但是,如果Comment.About沒有任何價值,我沒有問題。爲什麼會這樣?
Comment.About不是唯一屬性是引用類型。例如,Comment.From是一個引用類型,但Comment.About是作爲接口的類型的唯一屬性。
失敗:
var comment = new Comment();
comment.CommentText = "It fails!";
comment.PartitionKey = "TEST";
comment.RowKey = "TEST123";
comment.About = sow1;
comment.From = person1;
作品:
var comment = new Comment();
comment.CommentText = "It works!";
comment.PartitionKey = "TEST";
comment.RowKey = "TEST123";
//comment.About = sow1;
comment.From = person1;
謝謝!
謝謝smarx - 這很有道理,而且我確實知道這一點。讓我感到困惑的是,任何引用類型都會自動忽略 - 那麼爲什麼錯誤呢?我沒有試圖保存這個屬性,但是我必須在保存之前去除額外的工作,因爲它會拋出錯誤。 –
我沒有意識到引用類型被忽略。但是'string'不是引用類型嗎? – smarx
Uuuhhh,你有我。我濫用術語引用類型 - 我的意思是引用另一個類的屬性。所以在上面的例子中,About和From屬性都是對另一個類型的引用。 From屬性始終是Person類型。但是Azure表服務忽略了這個屬性 - 沒有錯誤,但絕對沒有以任何方式保存。但是,來自ICommentable類型的屬性,如果它具有值,則會導致錯誤。 –