请参阅以下代码。使用 AutoMapper 时测试通过,但使用 ValueInjecter 时测试失败:
using NetFwTypeLib;
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
INetFwPolicy2 policy = (INetFwPolicy2)Activator.CreateInstance(
Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
INetFwRules fwRules = policy.Rules;
Rule rule = new Rule();
foreach (INetFwRule fwRule in fwRules)
{
if (fwRule.Name == "HomeGroup Out")
{
//AutoMapper.Mapper.CreateMap<INetFwRule, Rule>();
//AutoMapper.Mapper.Map(fwRule, rule);
rule.InjectFrom(fwRule);
break;
}
}
Assert.IsTrue(rule.Name == "HomeGroup Out");
}
}
public class Rule
{
public string Name { get; set; }
}
有任何想法吗?谢谢。
编辑:
根据 Omu 的回答,问题似乎与 COM 对象有关,而不仅仅是 FirewallAPI.dll 类。所以我将标题从“无法获取 ValueInjecter 以映射 FirewallAPI.dll 类”更改为“无法获取 ValueInjecter 以映射 COM 对象”。