В самом деле? Сладкий. Я только что узнал что-то очень крутое!
аюсь получить доступ к библиотеке .Net(Image Resizer) из COM (jscript).
Я попробовал и IDispatch и генерацию интерфейса класса, а также [ClassInterface (ClassInterfaceType.AutoDual)] в рассматриваемом классе.
Есть метод с 3 перегрузками:
Bitmap Build(object, ResizeSettings settings)
void Build(object source, object dest, string settings)
void Build(object source, object dest, ResizeSettings settings)
призвание
Build("file",s); //works
Следующие оба генерируют «Неверное количество аргументов или неправильное присвоение свойства» (ошибка времени выполнения JScript)
Build("file","file", s)
Build("file","file","settings
Я не могу найти причину, по которой перегрузки не должны работать через взаимодействие, особенно когда число аргументов отличается. Я что-то пропустил?
Обновление: вот полный код определения метода. Вторая перегрузка недоступна. Это не только эти методы - в каждом перегруженном методе мне кажется, что я могу получить доступ только к первой перегрузке. Это недокументированная ошибка в COM / дизайне?
/// <summary>
/// Provides methods for generating resized images, and for reading and writing them to disk.
/// Use ImageBuilder.Current to get the current instance (as configured in the application configuration), or use ImageBuilder.Current.Create() to control which extensions are used.
/// </summary>
public class ImageBuilder : AbstractImageProcessor, IQuerystringPlugin
{
/// <summary>
/// Resizes and processes the specified source image and returns a bitmap of the result.
/// This method assumes that transparency will be supported in the final output format, and therefore does not apply a matte color. Use &bgcolor to specify a background color
/// if you use this method with a non-transparent format such as Jpeg.
/// </summary>
/// <param name="source">May be an instance of string (a physical path), VirtualFile, IVirtualBitmapFile, HttpPostedFile, Bitmap, Image, or Stream.</param>
/// <param name="settings">Resizing and processing command to apply to the.</param>
public virtual Bitmap Build(object source, ResizeSettings settings) {
BitmapHolder bh = new BitmapHolder();
Build(source, bh, settings);
return bh.bitmap;
}
/// <summary>
/// Resizes and processes the specified source image and stores the encoded result in the specified destination.
/// </summary>
/// <param name="source">May be an instance of string (a physical path or app-relative virtual path), VirtualFile, IVirtualBitmapFile, HttpPostedFile, Bitmap, Image, or Stream. app-relative virtual paths will use the VirtualPathProvider system</param>
/// <param name="dest">May be a physical path (string), or a Stream instance. Does not have to be seekable.</param>
/// <param name="settings">Resizing and processing command to apply to the.</param>
public virtual void Build(object source, object dest, ResizeSettings settings) {
ResizeSettings s = new ResizeSettings(settings);