Phi*_*ent 3 c# windows asp.net com+ .net-4.0
我正在尝试使用c#和ASP.NET来使用COM +.我一直在关注一个例子,但其中一部分失败了.
dynamic oCatalog = Activator.CreateInstance(Type.GetTypeFromProgID("ComAdmin.COMAdminCatalog"));
/* Get the Applications collection and populate it */
dynamic applicationInstances = oCatalog.GetCollection("Applications");
applicationInstances.Populate();
foreach (dynamic applicationInstance in applicationInstances)
{
Response.Write("<p>" + applicationInstance.Name.ToString() + "-" + applicationInstance.Key.ToString() + "</p>");
dynamic objComponents = oCatalog.GetCollection("Components", applicationInstance.Key);
objComponents.Populate();
foreach(dynamic Components in objComponents)
{
Response.Write("<p>" + Components.Name.ToString() + "</p>");
}
}
Run Code Online (Sandbox Code Playgroud)
当上面调用oCatalog.GetCollection("Components",applicationInstance.Key)被调用时,我得到错误:
System.Reflection.TargetParameterCountException:调用GetCollection时出错.
如何获取应用程序实例中的当前组件列表?
您需要为特定应用程序的组件询问"applications"集合:
ICOMAdminCatalog2 oCatalog = (ICOMAdminCatalog2) Activator.CreateInstance(Type.GetTypeFromProgID("ComAdmin.COMAdminCatalog"));
ICatalogCollection applications = oCatalog.GetCollection("Applications");
applications.Populate();
foreach (ICatalogObject applicationInstance in applications)
{
ICatalogCollection comps = applications.GetCollection("Components", applicationInstance.Key);
comps.Populate();
foreach (ICatalogObject comp in comps)
{
Console.WriteLine("{0} - {1}", comp.Name, comp.Key);
}
}
Run Code Online (Sandbox Code Playgroud)
有关示例,请访问:http://msdn.microsoft.com/en-us/library/windows/desktop/ms686093(v = vs.85).aspx