#c#
#c#
Вопрос:
Я пытаюсь использовать этот метод, но я запутался в том, что / как передать ему параметр.
void SaveReport(Telerik.Reporting.Report report, string fileName)
{
ReportProcessor reportProcessor = new ReportProcessor();
Telerik.Reporting.InstanceReportSource instanceReportSource =
new Telerik.Reporting.InstanceReportSource();
instanceReportSource.ReportDocument = report;
RenderingResult result =
reportProcessor.RenderReport("PDF", instanceReportSource, null);
using (FileStream fs = new FileStream(fileName, FileMode.Create))
{
fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
}
}
Я попытался передать имя отчета, который мне нужно экспортировать, который находится в библиотеке, таким образом:
2-я модификация
protected void Button1_Click(object sender, EventArgs e)
{
string fileName = "SS";
var report = BOMreports.Report321();
SaveReport(report, fileName );
}
Но я продолжаю получать ошибку «не удается получить доступ к методу в пространстве имен» в отчете var.
Я решаю это?
Комментарии:
1. Что такое BOMReports? Класс или пространство имен?
2. Это класс, который содержит несколько отчетов.
3. Почему аргументы в
SaveReport
расположены в неправильном порядке? В сигнатуре метода это так,report, fileName
но при вызове вы передаетеfileName, report
.4. Вы уверены, что получаете ошибку из этой строки? Попробуйте
var report = BOMReports.Report321(); SaveReport(filename, report);
в двух строках. Посмотрите, в какой строке появляется ошибка.5. Показать
BOMreports
код.
Ответ №1:
Похоже, что у вас конфликт в BOMreports
классе и пространстве имен с тем же именем. И поскольку ваше пространство имен находится в той же сборке, что и ваш код, а класс находится в другой сборке, компилятор ссылается на него, когда вы используете имя в своем коде. Попробуйте получить доступ к классу с его полным идентификатором как:
namespace.BOMreports.Report321();
Другое дело, убедитесь, что Report321
это статический метод, который возвращает объект Telerik.Reporting.Report
.
Добавление
Если Report321
это класс в BOMreports
, то вы делаете это неправильно. Что вам нужно сделать, так это создать его экземпляр следующим образом:
var report = new BOMreports.Report321();
Комментарии:
1. Я исследовал ваш намек, но если я чего-то не упустил из вашего ответа, в такой DLL нет конфликтов. Пространство имен — BOMreports, а имя файла в таком пространстве имен — класс «Report321», который отлично работает в нескольких других контекстах.
2. @Nullbyte Значит, Report321 не является методом?
3. Нет, BOMreports — это библиотека классов, содержащая несколько классов, одним из которых является Report321.
4. Ты звезда! В этом и заключалась проблема. с вашим обновленным ответом проблема решена.
5. @Nullbyte Я не звезда: p Я думаю, тебе нужно немного кофе. Вот и все: D