2012-05-21 61 views
0

我有一個關於嘗試通過XNA 4.0內容管道讀取XML文件以創建對象時遇到錯誤的問題。首先我重複使用舊的XNA 3.1代碼,它在當天工作,但現在拋出一個錯誤消息:XNA中的XML序列化期間InvalidOperationsException

構建內容拋出InvalidOperationException:從實例中抽象出實例化的實例。 (無法建立抽象類的實例 - 大致翻譯)在ReflectionEmitUtils() ......而那張永遠,我可以發佈它,如果它是必要的,但對我的初步要求的更好的可讀性..

然後我使用這個Method,但它會引發同樣的錯誤。

這些源代碼的相關部分: 我寫了一個類來定義XML的文件的內容/結構:

public class Command 
    {   
     public List<bool> mButtons;  
     public List<Keys> keys;   
     public Enum iD;  
    } 

這是我的XML文件中,這是我想建立命令對象

<?xml version="1.0" encoding="utf-8" ?> 
<XnaContent> 
    <Asset Type="KinectRTS_Input.Command"> 
    <mButtons>true/mButtons> 
    <keys> 
     <Item>LeftControl/Item>  
    </keys> 
    <iD>SMulti/iD> 
    </Asset> 
</XnaContent> 

(在我的代碼,該支架是正確的,但由於此表單處理XML標籤...;)) 我爲了使用Test-Application找出來,其格式XNA-Serializer用於輸出List-項目和枚舉,所以我相當確定,沒有錯誤。

回答

0

它看起來像你的XML無效或你的模型是。對於mButtons字段,您已將其定義爲List<bool>,但在XML中它是bool而非List<bool>。我將編輯XML以使<mButtons>元素包含單個<Item>元素,或者將Model中的mButtons聲明更改爲bool而不是List<bool>

0

太容易了......問題不在於列表,事實上,我的請求中提到的測試應用程序實際上返回了帶有Item-Tags的XML-Tags,列表和沒有Item-Tags的bool -list。將bool包裝到Item-Tags中導致「未預期」 - 錯誤。我不知道,爲什麼序列化程序不同地處理列表和列表。

問題是Enum'iD',它是一個抽象類,因此拋出上面提到的錯誤。似乎我被錯誤信息的龐大規模所淹沒,而忽略了關鍵信息 - 串行器嘗試構建一個抽象類。

但無論如何。 - Kuroni Kaimei