小编kde*_*eez的帖子

如何将JSON反序列化为正确类型的对象,而不必事先定义类型?

我搜索了类似的问题,找不到任何与我想要的相匹配的东西.

C#的新手请耐心等待.

我有一些json文件,我正在反序列化.我希望文件反序列化为正确类型的对象,而不必事先定义类型.这是我的代码:

public class loadJson
    {
        //path of the file location
        public void readJson(string path)
        {
            //array of files at the path location. right now just reading one file
            FileInfo[] files = new DirectoryInfo(path).GetFiles("seleniumExample.json").ToArray();

            foreach (FileInfo fi in files)
            {

                dynamic b1 = null;
                using (StreamReader file = new StreamReader(fi.FullName))
                {

                    string fileText = file.ReadToEnd();
                    //Console.WriteLine(fileText);

                    try
                    {
                        b1 = Newtonsoft.Json.JsonConvert.DeserializeObject(fileText);
                    }
                    catch(Exception e)
                    {
                        Console.WriteLine("ERROR!!!! " + e.ToString());
                    }

                    file.Close();
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我有一堆对象类型,我将通过json文件提供给我的程序.

我不想明确地将b1称为Bid,客户或任何其他特定的预定义类.如果我明确地将b1称为Bid,它会加载所有信息,并填写正确的实例变量.

但是当我使用"动态"或一般的"对象"时,它无法解决它并只是初始化为"对象".

有没有办法执行泛型反序列化并让它根据json文件中定义的字段创建正确类的对象? …

c# serialization json deserialization

10
推荐指数
1
解决办法
1万
查看次数

如何验证入站邮件?具体使用 SendGrid 吗?

我创建了一个使用 SendGrid 的 Inbound Parse Webhook 的应用程序。每当有人通过电子邮件发送“whatever@mydomain.com”时,电子邮件就会转到 SendGrid,然后 SendGrid 会使用包含电子邮件内容的 POST 访问我们的服务器。然后我们可以将该电子邮件数据反馈到我们的主应用程序中。

我有这一切。但是现在我不知道我应该如何验证 SendGrid 发布到我们服务器的消息。有谁知道这样做的最佳行动方案?验证我们的入站电子邮件实际上来自我们主应用程序的授权用户?

显然我们可以检查标题中的“发件人”地址,但我已经读到这些可以完全欺骗。显然,来自 SendGrid 的传入邮件的两个属性“dkim”和“spf”与授权有关。但是我在文档中或其他任何地方都找不到任何内容,这告诉我应该如何使用这些“dkim”和“spf”字段来验证消息的真实性。

如果有人有任何帮助,一般的、具体的或其他方面的……将不胜感激。提前致谢。

email authentication inbound sendgrid

5
推荐指数
1
解决办法
564
查看次数

GDI +中发生一般错误(截图SaveAsFile,ExternalException)

您好我尝试查看可能有我答案的问题,但没有一个问题.

我正在进行Web自动化测试,并尝试截取发生错误的屏幕截图并将其保存到另一个文件夹中的文件中.

在搜索页面上的元素时,我的程序有30秒超时.如果在30秒后没有找到任何元素,则需要SS,重新加载页面,然后再次尝试.

第一个截图工作正常.但是在第二次运行时,它试图将另一个屏幕截图保存到文件夹中,我得到了这个看似由一百种不同的东西引起的令人难以置信的模糊错误,所以我不太确定问题是什么.

这是我的代码:

public void takeScreenShot()
    {
        string ssPath = _persistencePath += "\\Errors";

        string currTime = DateTime.Now.ToString(@"MMM-ddd-d-HH.mm");

        Screenshot ss = ((ITakesScreenshot)_driver).GetScreenshot();

        try
        {
            ss.SaveAsFile(ssPath + "\\ERROR-" + currTime + ".png", System.Drawing.Imaging.ImageFormat.Png);
            ssCount = 0;
        }
        catch (System.Runtime.InteropServices.ExternalException)
        {
            ssCount++;

            //error occurs here
            ss.SaveAsFile(ssPath + "\\ERROR-" + currTime + "(" + ssCount + ")" + ".png", System.Drawing.Imaging.ImageFormat.Png);
        }
Run Code Online (Sandbox Code Playgroud)

我最初认为问题是它试图保存同名文件,因为如果错误发生在同一分钟,那么文件名是相同的.这就是为什么我添加了catch块,试图在同一分钟内更改名称.但这并没有解决它.

我再次尝试搜索,无法找到答案.任何帮助是极大的赞赏.

c# selenium screenshot file path

2
推荐指数
1
解决办法
3552
查看次数