簡體   English   中英

使用泛型類型時,C#System.TypeInitializationException

[英]C# System.TypeInitializationException When Generic Types used

當我嘗試調用以下代碼時,我在C#中收到System.TypeInitializationException:

List<BuyShopItem> buyShopItemList = new List<BuyShopItem>(0);

BuyShopItem在外部程序BuyShopItem ,並且包含以下內容:

namespace GameProtocol
{
    public struct BuyShopItem
    {
        public int ShopItemID;
        public int Amount;
        public int GoldPrice;
        public int SilverPrice;
        public int CharacterPointPrice;
        public int ResearchPointPrice;
    }
}

可能是因為外部裝配,對吧?

不幸的是,我無法更改它,因為我需要再次將BuyShopItem傳遞回另一個外部程序集。

有關程序集的一些信息:來自Unity游戲.NET 3.5(根據DotPeek: msil, .Net Framework v3.5

我在SharpDevelop和Visual Studio 2017中遇到問題,因此可能與IDE不相關。 peverify結果:

Microsoft (R) .NET Framework PE Verifier. Version  4.0.30319.0
Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten.

[MD]: Error: Field has a duplicate, token=0x040059d7. [Token:0x040059CF]
[MD]: Error: Field has a duplicate, token=0x040059cf. [Token:0x040059D7]
[MD]: Error: Field has a duplicate, token=0x0400a48b. [Token:0x0400A478]
[MD]: Error: Field has a duplicate, token=0x0400a478. [Token:0x0400A48B]
4 Fehler wird/werden überprüft Assembly-CSharp.dll

如果您有任何提示,請告訴我。 我將盡快嘗試。

這是Visual Studio 2017中的異常的屏幕截圖: https : //i.imgur.com/WHCbWTM.png

更新:我只是嘗試以下操作: Console.WriteLine(typeof(BuyShopItem)); ,發生同樣的錯誤。 為什么無法獲得類型?

可以創建一個零長度的結構列表。

也可以創建在不同程序集中定義的某種類型的列表-但要檢查以確保在運行時可以找到必需的DLL。

通常,構造實例非常安全-但請檢查是否存在自定義構造函數引發異常。

還要仔細檢查以查看BuyShowItem結構是否指定了調用其他代碼的任何靜態字段,這又可能會失敗。 這通常是TypeInitializationException的根本原因。

請參閱: https : //msdn.microsoft.com/zh-cn/library/system.typeinitializationexception(v=vs.110).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM