Boj*_*jan 5 c# unit-testing email-validation asp.net-core-mvc asp.net-core
我有一个利用的单元测试项目Interop.ADODB.这是代码:
public CDO.Message ReadMessage(string emlFileName)
{
if (string.IsNullOrEmpty(emlFileName)) return null;
CDO.Message msg = new CDO.MessageClass();
ADODB.Stream stream = new ADODB.StreamClass();
stream.Open(Type.Missing,
ADODB.ConnectModeEnum.adModeUnknown,
ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified, string.Empty, string.Empty);
stream.LoadFromFile(emlFileName);
stream.Flush();
msg.DataSource.OpenObject(stream, "_Stream");
msg.DataSource.Save();
return msg;
}
Run Code Online (Sandbox Code Playgroud)
问题是我将这个项目转换为.NET Core.我无法弄清楚如何导入我需要使这个方法工作的COM库.我需要的是Interop.ADODB和Interop.CDO.
所有这个方法都是采用电子邮件文件并转换为对象,以便我可以从中读取值,然后与发送的电子邮件进行比较.真的是一个简单的单元测试来验证电子邮件内容.
有没有办法让我导入COM对象,或者是否有一个库替换CDO.Message了我现在想要使用的库?
这是不明智访问来自.NET核心COM对象,.NET的核心应用程序被设计成独立的平台,和COM对象,比如ADODB.Stream和CDO.Message特定于Windows.
但是,确实有可能 - 如果你不介意后期绑定和弱打字.
dynamic msg = Activator.CreateInstance(Type.GetTypeFromProgID("CDO.Message", true));
Run Code Online (Sandbox Code Playgroud)
...
dynamic stream = Activator.CreateInstance(Type.GetTypeFromProgID("ADODB.Stream", true));
Run Code Online (Sandbox Code Playgroud)
等等
当在Windows上运行时,这适用于.NET Core 2.0.显然,根据这篇文章,在以前的版本中是不可能的.
尽管如此,使用托管平台中立代码重写您的方法会更好.
| 归档时间: |
|
| 查看次数: |
2856 次 |
| 最近记录: |