当我尝试调用以下命令时,我在 C# 中收到 System.TypeInitializationException:
List<BuyShopItem> buyShopItemList = new List<BuyShopItem>(0);
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));
,发生了同样的错误。为什么无法获取类型?