Edit: On dirait que Jon Skeet avait des questions similaires: How does the C# compiler detect COM types?
Get CLSID par l'interface PIA type
Comment puis-je obtenir le CLSID pour une interface donnée dans un interop primaire Assemblée? Voici ce que je parle:
// The c# compiler does some interesting magic.
// The following code ...
var app = new Microsoft.Office.Interop.Outlook.Application();
// ... is compiled like so (disassembled with Reflector):
var app =((Microsoft.Office.Interop.Outlook.Application)
Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("0006F03A-0000-0000-C000-000000000046"))));
Microsoft.Office.Interop.Outlook.Application
est une interface, et donc il ne peut pas être instanciée directement. Ce qui est intéressant ici, c'est que C# vous permet de traiter ces interfaces COM comme si elles étaient des classes que vous pouvez instancier avec le mot-clé new
. Ce que je veux savoir, étant donné le System.Type
pour une interface donnée, comment puis-je obtenir le CLSID?
Note: Je veux finalement être en mesure de créer une instance étant donné System.Type
de l'interface - Je ne me soucie pas vraiment comment. Je suppose ici que la façon la plus simple de faire ceci serait d'obtenir CLSID avec le Type, comme le fait le compilateur C#.
J'ai essayé cela, mais cela ne me donne pas le GUID correct, comme dans ce qui suit: 'typeof (Outlook.Application) .GUID! = Type.GetTypeFromCLSID (nouveau Guid (" 0006F03A-0000-0000-C000- 000000000046 ")). GUID'. – Charles