3

私は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>");
        }           
    }

上記の呼び出しoCatalog.GetCollection( "Components"、applicationInstance.Key)を呼び出すと、次のエラーが発生します。

System.Reflection.TargetParameterCountException:GetCollectionの呼び出し中にエラーが発生しました。

アプリケーションインスタンスの現在のコンポーネントのリストを取得するにはどうすればよいですか?

4

1 に答える 1

7

特定のアプリケーションのコンポーネントについては、「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);
    }
}

例については、こちらを確認してください:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms686093 (v=vs.85).aspx

于 2012-10-05T13:09:38.760 に答える