in ComObject.cs [144:150]
public static T QueryInterface<T>(object comObject) where T : ComObject
{
using (var tempObject = new ComObject(Marshal.GetIUnknownForObject(comObject)))
{
return tempObject.QueryInterface<T>();
}
}