Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有解析抛出错误的类库_C#_Parse Platform_Class Library_Typeinitializeexception - Fatal编程技术网

C# 具有解析抛出错误的类库

C# 具有解析抛出错误的类库,c#,parse-platform,class-library,typeinitializeexception,C#,Parse Platform,Class Library,Typeinitializeexception,我正在尝试开发一个包含Parse.com的类库 我创建了一个空的、干净的类库,然后使用Nuget添加了Newtonsoft.Json、Parse和Parse.NetFx45 然后,我从Parse.com网站添加了一个简单的“helloworld”函数,并在类库中创建了一个函数 以下是我的功能: public async static void testParse() { ParseClient.Initialize("MyApplicatonID", "My.NetKey");

我正在尝试开发一个包含Parse.com的类库

我创建了一个空的、干净的类库,然后使用Nuget添加了Newtonsoft.Json、Parse和Parse.NetFx45

然后,我从Parse.com网站添加了一个简单的“helloworld”函数,并在类库中创建了一个函数

以下是我的功能:

public async static void testParse()
{
    ParseClient.Initialize("MyApplicatonID", "My.NetKey");

    var testObject = new ParseObject("TestObject");
    testObject["foo"] = "bar";
    await testObject.SaveAsync();
}
然后,我添加了一个单元测试项目,引用了我的类库并编写了一个测试,如下所示:

[TestMethod]
public void TestParse()
{
    Experior.ParseFunctions.testParse();
}
using Parse;
using System.Threading.Tasks;

namespace ExperiorWrapper
{
public class ParseFunctions
{
    public static async Task testParse()
    {
        ParseClient.Initialize("xxxx", "xxxx");

        var testObject = new ParseObject("TestObject");
        testObject["foo"] = "bar";
        await testObject.SaveAsync();
    }
}
}
当我运行测试时,它在的
ParseClient.Initialize
行抛出以下错误:

System.TypeInitializationException未处理消息:未处理 中发生“System.TypeInitializationException”类型的异常 mscorlib.dll其他信息:的类型初始值设定项 “Parse.ParseClient”引发了异常

我在我读到的一个线程中做了一些搜索,其中一个线程暗示Parse不喜欢被包装在类库中

因此,我想,我将在Windows窗体项目中测试相同的代码,并通过一个简单的按钮调用代码

而且它工作得很好

有没有人能看到我做错了什么,或者提出问题所在


如有任何提示,将不胜感激

多亏了@Samuel,我修改了我的代码如下:

[TestMethod]
public void TestParse()
{
    Experior.ParseFunctions.testParse();
}
using Parse;
using System.Threading.Tasks;

namespace ExperiorWrapper
{
public class ParseFunctions
{
    public static async Task testParse()
    {
        ParseClient.Initialize("xxxx", "xxxx");

        var testObject = new ParseObject("TestObject");
        testObject["foo"] = "bar";
        await testObject.SaveAsync();
    }
}
}
现在的测试是这样的:

[TestMethod]
    public async Task TestParse()
    {
        await ParseFunctions.testParse();
    }
我遇到的另一个重要问题是,必须添加Newtonsoft.Json、Parse和Parse.NetFx45作为对测试项目的引用,以使其正常工作


HTH

哪一行代码会引发异常?@Tarec“当我运行测试时,它会在ParseClient上引发以下错误。Initialize”删除异步并检查行为(如果存在,您需要调用
Save
,而不是
SaveAsync
,或者手动等待完成)。例如,nUnit能够创建异步测试以正确执行异步方法,而且在任何情况下都需要等待
testParse
。或者将测试签名更改为
public async void TestParse()
,不要忘记等待。