繁体   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