![](/img/trans.png)
[英]C# - text to double conversion throws 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.