Member 8571531 Ответов: 2

Не существует аргумента, соответствующего требуемому формальному параметру "информация"


У меня есть проект VS C# (project1), который компилируется и прекрасно работает без каких-либо ошибок. Я создал второй проект (project2), который добавляет несколько файлов в качестве ссылок из первого проекта. Я добавил все необходимые ссылки и т. д. Я создал условный символ компиляции для project2. Project2 выдает одну ошибку:
Не существует аргумента, соответствующего требуемому формальному параметру "информация" кривой.Кривая(SerializationInfo, StreamingContext)'

 public CurveCollection(List<Rhino.Geometry.Curve> curves) 
{
     this.CurveList = this.CurveList;            
}

Я искал на форумах, чтобы попытаться найти причину этой ошибки, и я в растерянности.
Может ли кто-нибудь пролить свет на то, что я, возможно, упускаю?

Что я уже пробовал:

Я искал на форумах, чтобы попытаться найти причину этой ошибки, и я в растерянности. Я попытался повторно связать файл, но это не решило проблему.

2 Ответов

Рейтинг:
2

Gerry Schmitz

this.CurveList = this.CurveList; 


Вы (вероятно) назначаете (универсальный) список "самому себе"; который не инициализируется; запускаете конструкторы, требующие параметров.

Ты наверное хотел этого:

this.CurveList = curves;


Member 8571531

Привет Джерри Шмитц,
Спасибо за обратную связь. На первый взгляд ваше предложение было очевидным для меня, но когда я попытался это сделать, оно не решило проблему, даже после того, как я инициализировал CurveList как новый список.

Рейтинг:
1

OriginalGriff

Я не уверен, что код, который вы показываете, находится там, где находится ошибка, или если это так, что вы смотрите на одну и ту же версию файлов.

Ошибка заключается в том, что вы пытаетесь создать экземпляр кривой, а класс имеет только формальный конструктор, требующий по крайней мере одного параметра, который является объектом SerializationInfo - предположительно, вы пытаетесь построить его с помощью конструктора без параметров, который не существует.
Но этот код - несмотря на то, что он вообще ничего не делает, если только вы не стали очень неприятны с настройщиком свойств CurveList и не начали создавать в нем объекты - не показывает никакого использования экземпляров Кривой. Все, что он делает, - это устанавливает себе значение и полностью игнорирует формальное значение параметра.

Я бы начал с того, что задался вопросом, что именно вы делаете: "добавление нескольких файлов в качестве ссылок из другого проекта" - это не тот путь, которым я бы пошел-я бы добавил весь проект в качестве ссылки, а затем использовал бы его объекты напрямую, чтобы было меньше риска возникновения несовместимых изменений. Я подозреваю, что "ссылки на файлы" ty=, которые вы думаете, что установили, на самом деле являются копиями, и они уже не те же самые - поэтому строка, на которую вы ссылаетесь, чтобы посмотреть на ошибку, не является тем, что (или где) вы считаете ...


Member 8571531

Привет OriginalGriff,
Спасибо за обратную связь. Чтобы пролить немного больше света на эту проблему, я унаследовал проект VS (project1), который создает DLL для конкретного приложения (hostApp1). Теперь существует новая версия хост-приложения (hostApp1 v2.0), которая имеет некоторые разрывы SDK. В том же решении VS я создал новый проект VS (project2), который связывает ряд файлов из project1, поскольку они все еще действительны, и добавил условный символ компиляции, который позволяет повторно использовать 99,9% кода в project1. Это также позволяет мне управлять одной базой кода, которая является общей для двух проектов, и в то же время иметь возможность компилировать две отдельные библиотеки dll.

Я согласен с вами, что корень ошибки может быть в другом месте, но я не смог найти, где он может быть. Еще более загадочным является то, почему приведенный выше код работает для проекта 1, но не для проекта 2.

Gerry Schmitz

Большинство "сшитых" проектов были для меня головной болью, включая копирование (ссылка идет, но не файл). В конечном итоге вы обновляете один и тот же проект из разных мест и контекстов; и даже не осознаете этого.