私はオブジェクトRS2005.ParameterValue[] parameters
を持っています。ラベル、名前、値を宣言します。それから、別の関数に渡して、それをAと呼ぶことができます。 関数Aの中で、型変数RS2005.ParameterValue []の一時変数temp
に代入しようとすると、オブジェクトが空ではなくてもnullが返されますデバッガ)。この関数はいくつかのビルド前にはうまくいきましたが、最近では機能が停止していますが、Visual Studioのバージョンを2015年に変更したことがあるかどうかは疑問です。タイプからオブジェクトへのキャストは戻り値nullを返します
オリジナル機能
RS2005.ParameterValue[] parameters = new RS2005.ParameterValue[5];
parameters[0] = new RS2005.ParameterValue();
parameters[0].Label = "a";
parameters[0].Name = "a";
parameters[0].Value = "AA";
.....
frontPageBytes = Functions.functionA(parameters);
関数A
public static byte[] functionA(object parameters)
{
byte[] bytes = null;
RS2005.ReportExecutionService rsExec = new RS2005.ReportExecutionService();
rsExec.Credentials = new NetworkCredential(RSServerUserLogin, RSServerUserPassword, RSServerUserDomain);
rsExec.Url = RSServerWSURI;
string deviceInfo = string.Format(@"<DeviceInfo><OutputFormat>{0}</OutputFormat></DeviceInfo>", "PDF");
RS2005.ExecutionInfo ei = rsExec.LoadReport(rdlPath, null);
RS2005.ParameterValue[] temp = parameters as RS2005.ParameterValue[]; <---------- This temp is null
rsExec.SetExecutionParameters(parameters as RS2005.ParameterValue[], "en-us"); <---------- this throws an exception because parameters is null
....
}
"オブジェクトが空ではないにもかかわらず"どのオブジェクトですか? 'functionA'の中の' parameters'ですか?今まであなたの問題を再現できません –
おそらく愚かな質問ですが、functionAの型を 'public static byte [] functionA(RS2005.ParameterValue [] parameters)'に変更し、コンパイル時の型の安全性を助けてください。 'オブジェクト 'を通ってまた戻ることは、不必要なリスクのようです。 – StuartLC
@StuartLCまたは、そのままキャストの代わりに直接キャストを使用します。 – HimBromBeere