次のコードを参照してください。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 の回答に基づいて、問題は FirewallAPI.dll クラスだけでなく、COM オブジェクトに関連しているようです。そのため、タイトルを「ValueInjecter を取得して FirewallAPI.dll クラスをマップできません」から「ValueInjecter を取得して COM オブジェクトをマップできません」に変更しました。