/// <summary> /// Entry point for unmanaged COM activation API from managed code /// </summary> /// <param name="cxt">Reference to a <see cref="ComActivationContext"/> instance</param> public static object GetClassFactoryForType(ComActivationContext cxt) { if (cxt.InterfaceId != typeof(IClassFactory).GUID && cxt.InterfaceId != typeof(IClassFactory2).GUID) { throw new NotSupportedException(); } if (!Path.IsPathRooted(cxt.AssemblyPath)) { throw new ArgumentException(); } Type classType = FindClassType(cxt.ClassId, cxt.AssemblyPath, cxt.AssemblyName, cxt.TypeName); if (LicenseInteropProxy.HasLicense(classType)) { return(new LicenseClassFactory(cxt.ClassId, classType)); } return(new BasicClassFactory(cxt.ClassId, classType)); }