У меня есть элемент управления ActiveX, который я давно создал в VB 6.0 для облегчения отправки факсов, и теперь мне нужно эффективно преобразовать этот элемент управления в библиотеку классов C#.
Я добавил ссылку на библиотеку FAXCOMEXLib, и Visual Studio без проблем видит объекты, свойства и методы, но когда я компилирую свою DLL, я сталкиваюсь с двумя проблемами. Во-первых, кажется, что библиотека классов содержит только те свойства и методы из FAXCOMEXLib, которые фактически используются в моей собственной библиотеке. Это проблема, потому что я выставляю COM-объекты через свойства, доступные только для чтения.
public FaxServer Server {get { return m_Server; }}
public FaxDocument Document {get { return m_Document;}}
но если вы вызовете эти свойства и попытаетесь использовать возвращенные объекты, у вас будет доступ только к ограниченному количеству методов и свойств.
FaxDocument имеет больше, чем просто ConnectedSubmit()
Я думал, что это могла быть опция компилятора, которая вырезала код, который не использовался, но я не могу найти опцию, чтобы отключить ее.
Моя вторая проблема заключается в том, что метод FaxServer.Connect() возвращает HRESULT согласно документации, но Visual Studio рассматривает это как недействительный возврат. У меня не может быть этого, потому что мне нужно проверить, было ли соединение успешным.
m_Server = new FaxServer();
if (m_Server.Connect("") == 0) // error CS0019 here
throw new Exception("Could not connect to Server.");
Выдает ошибку CS0019 «Оператор '==' не может быть применен к операндам типа 'void' и 'int'"
Я не знаю, почему он считает, что FaxServer.Connect() возвращает void.
FaxServer в обозревателе объектов
Любая помощь будет принята с благодарностью.
Спасибо, Кен