我正在尝试反序列化一个XML字符串,其中元素的值不在我的Enum值的范围内.
Public enum MyEnum
{
Unknown,
Car,
Bicycle,
Boat
}
[SerializableAttribute()]
public class MyClass
{
private string _id;
private MyEnum _myEnum;
public string ID
{
get { return _id; }
set { _id = value; }
}
public MyEnum EnumValue
{
get { return _myEnum; }
set { _myEnum = value; }
}
public MyClass(string id)
{
this._id = id;
}
public MyClass() : this("") { }
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试反序列化后面的字符串(注意Plane作为枚举值):
<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><MyClass><ID>1234567890123456789</ID><EnumValue>Plane</EnumValue></MyClass>
Run Code Online (Sandbox Code Playgroud)
然后我的反序列化将抛出异常,甚至在它为EnumValue命中我的公共字段之前,会出现以下异常消息:
实例验证错误:'Plane'不是EnumValue的有效值
是否可以返回EnumValue的默认值,如果我尝试在XML中解析的值不支持EnumValue?例如.对于此处提供的XML字符串,EnumValue应设置为"Unknown".
当我使用MailKit通过IMAP协议收到来自Exchange的邮件时,它缺少附件.当我做:
string.Format("Mail has {0} attachments", mime.Attachments.Count())
Run Code Online (Sandbox Code Playgroud)
它报告"0",即使邮件本身包含附件(如果我在Outlook客户端中打开它,我会看到附件),当我激活IMAP协议日志记录时,显然它包含一个附件:
S: X-MS-Has-Attach: yes
...
S: Content-Type: message/rfc822
S: Content-Disposition: attachment;
S: creation-date="Thu, 07 Jan 2016 09:16:53 GMT";
S: modification-date="Thu, 07 Jan 2016 09:16:53 GMT"
...
S: X-MS-Has-Attach:
...
Run Code Online (Sandbox Code Playgroud)
有趣的是附件部分中的"S:X-MS-Has-Attach:"标题,位于服务器的同一个包中.
这是一个已知的问题,我该如何修复它以便在这些情况下我不会错过附件?它似乎只发生在一些邮件上并随机发生.
使用:MailKit 1.0.14.0 MimeKit 1.0.13.0
我发现有新的更新,但如果不能解决问题,我不会真正更新.
我的表中有一个位值,其中包含位(0 或 1)和 NULL(默认)。
这是我的 SProc:
CREATE PROCEDURE msp_CustomerStatistics
@Postal_MinValue int,
@Postal_MaxValue int,
@SubscriberState bit,
@CustomerType varchar(50)
BEGIN
[...]
WHERE Sub = @SubscriberState
AND Postal BETWEEN @Postal_MinValue AND @Postal_MaxValue
AND CustType = @CustomerType
END
Run Code Online (Sandbox Code Playgroud)
当我用1或0传递@SubscriberState参数时,结果是正确的。但是当我传递 null 时,结果是 0,这是不正确的。
如果我使用以下 where 子句创建 SQL 选择:
WHERE Sub IS NULL
Run Code Online (Sandbox Code Playgroud)
然后结果显示正确的计数。
知道如何让我的存储过程在 WHERE 子句中也使用 NULL 参数吗?
我有一个使用Microsoft.Speech for TTS的应用程序.我的TTS有问题,如果流在完成之前就已经开始了.
public void SpeakTest()
{
PromptBuilder prompt = new PromptBuilder();
prompt.AppendText("This is a test prompt...");
_speechSynthersizer.Speak(prompt);
prompt.ClearContent();
}
Run Code Online (Sandbox Code Playgroud)
这个TTS对象可以在讲话结束之前处理,这导致System.IO.EndOfStreamException和System.InvalidOperationException:说话时不能改变合成器的输出.例外.
如何取消发言,所以当我的对象被处理时,它将取消说话并正确处理对象?
使用 MailKit 在我的邮箱的收件箱中发生邮件或更改时,获得即时通知的最佳方式是什么?
我一直在玩以下事件: ImapClient.Inbox.CountChanged; 这在使用 Exchange 服务器时似乎效果最好,因为它们根本不会对 MessageArrived 事件做出反应。噗..
ImapClient.Inbox.MessagesArrived; 这似乎在 SquirrelMail 等开源邮件服务器上运行良好,但在 Exchange 中根本不起作用。
我想在新邮件到达邮箱时收到通知,是否有任何邮件被移动/删除,以及是否有任何邮件移动到此 imap 文件夹。当我的收件箱发生问题时,我应该采取哪种方法来尽快收到事件?我想要两全其美。
什么是 ImapClient.Inbox.Subscribe(); 用于??
我在使用多线程使用 MailKit 的 GetFolder 函数时遇到问题。情况是他们我正在运行一个线程来移动我的电子邮件(其中一个函数确实使用 GetFolder 来查找我的源文件夹和目标文件夹以移动电子邮件),另一个线程将搜索电子邮件第一个正在运行(第二个线程也执行 GetFolder 函数)。
大多数情况下,我都会收到 InvalidOperationException 异常,告诉我“ImapClient 当前正忙于处理命令”。
我怎样才能确保这不会发生?我尝试将所有 GetFolder 和其他 MailKit 操作更改为异步,并等待任务完成,但没有任何运气或多或少同时执行此操作。
我为两个线程使用相同的 ImapClient。