2015-02-19 3 views
1

Я делал программный пакет для подключения к удаленному серверу и отправлял некоторую информацию через WSDL, это был успешным и работал правильно, но мне было приказано перенести все мои программы в DLL, мне пришлось включить COM-взаимодействие и сделать некоторые возвращения, большинство моих программ прошли нормально, пока я не нашел эту ошибку в одной из моих программ, которые используют два прокси-сервера классы, сделанные из WSDL, я должен провести целую неделю чтения на веб-детали, но я не могу понять, как это исправить, это ошибкаПредупреждение: экспортер библиотеки типов столкнулся с типом, который генерируется из общего класса и не отмечен как [ClassInterface (ClassInterfaceType.None)]

Warning 1 Type library exporter warning processing 'Tarea.CrSeedService.CrSeedClient, Tarea'. Warning: Type library exporter encountered a type that derives from a generic class and is not marked as [ClassInterface(ClassInterfaceType.None)]. Class interfaces cannot be exposed for such types. Consider marking the type with [ClassInterface(ClassInterfaceType.None)] and exposing an explicit interface as the default interface to COM using the ComDefaultInterface attribute. Tarea  

Это один из прокси-классов, который получает ошибка

http://pastebin.com/y1zFfzER и это Reference.cs файл службы Reference

http://pastebin.com/vJuFZqsd

inb4 некоторые люди сообщают этот вопрос, как дублированный я Is it possible to implement a COM interface with a .NET generics class? прочитанные, но до сих пор не получили его

если вы видите, что pastebin я добавил уже во всех определениях классов в файле прокси-сервера cs

[ClassInterface(ClassInterfaceType.None)] 
[ComSourceInterfaces(typeof(Procesos.Iclass1))]  

где

[ComVisible(true)] 
    public interface Iclass1 
    { 
    string Ejecucion(string cn, string speed); 
    } 

где AssemblyInfo.cs

[assembly: ComVisible(true)] 

Что я должен делать? Что я делаю неправильно?

Я был бы признателен за некоторые рекомендации, VS2013 не может точно знать, где находится ошибка , хотя она вручную говорит о своем «CrSeedService.CrSeedClient». Я добавил определения и по-прежнему выводит ошибку.

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
[ClassInterface(ClassInterfaceType.None)] 
[ComSourceInterfaces(typeof(Procesos.Iclass1))] 
public partial class CrSeedClient :  System.ServiceModel.ClientBase<Tarea.CrSeedService.CrSeed>, Tarea.CrSeedService.CrSeed 
{ 
blah 
} 

С уважением

+0

я не вижу проблема. Редактирование автоматически сгенерированного кода, конечно, опасно, вы потеряете все свои изменения, когда он будет сгенерирован. Возможно, это и произошло. Вы также должны быть обеспокоены тем, что вы открываете * ничего *, реализация класса скрыта, но вы также не открываете интерфейс. Код клиента должен использовать позднюю привязку для использования этого класса. –

+0

Мне сложно объяснить, как и кодер новичка, но основная программа вызывает метод внутри другого файла, который вызывает другой метод в другом файле, возможно, не потому, что он раскрывается в загруженных файлах, в любом случае, я не могу найти файл reference.cs в своем обозревателе решений, но я могу войти в него через функцию поиска. Я добавил недостающие строки, и теперь он работает исправно, мои извинения – Glas

ответ

1

Я не могу найти файл Reference.cs в моем обозревателе решений, но я могу попасть в него с помощью функции поиска (поиск "класса CrSeedClient")

http://puu.sh/g3Yv8/3e8f11c975.png

Итак, я добавил недостающие строки, и теперь он работает правильно.

[ClassInterface(ClassInterfaceType.None)] 
[ComSourceInterfaces(typeof(Procesos.Iclass1))] 
public partial class CrSeedClient 

В качестве альтернативы вы можете редактировать ссылочный файл найти файл вручную

http://puu.sh/g3YzU/8523948580.png

может быть, это моя вина, назвать это новобранец ошибка, я не уверен,