【问题标题】:Issue with assembly createinstance and crystal report程序集创建实例和水晶报告的问题
【发布时间】:2012-08-15 08:46:28
【问题描述】:

我加载了一个程序集

private System.Reflection.Assembly;
object myData;

myAssembly = System.Reflection.Assembly.LoadFile("C:\\CrystalDecisions.CrystalReports.Engine.dll");

然后我创建一个实例。

myData=myAssembly.CreateInstance("CrystalDecisions.CrystalReports.Engine.ReportDocument", true);

这个 myData 总是返回 null,任何想法为什么它返回 null 而 myAssembly 有程序集信息及其公钥令牌?

【问题讨论】:

  • 我很乐意发布一个您可以尝试的示例.. 问题您是否希望 .dll 从您运行应用程序的同一位置加载..??
  • Dll 将使用加载文件从文件路径加载到程序集中,然后我使用指定类型的 CreateInstance,然后我使用反射的 GetMethod,但是 CreateInstance 总是返回 null。
  • 更改下面的示例以适合您尝试加载的 DLL。请注意我是如何获取类型的。也请查看 Activator.CreateInstance 。我将在下面发布如何做到这一点一秒

标签: c# .net crystal-reports crystal-reports-2008 crystal-reports-xi


【解决方案1】:

尝试以下类似的操作..

// dynamically load assembly from file Test.dll
Assembly myData = Assembly.LoadFile(@"C:\CrystalDecisions.CrystalReports.Engine.dll");

// get type of class Calculator from just loaded assembly
Type myData = myData.GetType("CrystalDecisions.CrystalReports")

// create instance of class Calculator
object myDataInstance = Activator.CreateInstance(myData);

Reflection Examples C#

【讨论】:

  • 如何获得 ReportDocument?
  • ReportDocument 是您想要获取的属性吗?如果是这样,请将 CrystalDecisions 更改为 ReportDocument.CrystalReports
  • Type myData 返回 null,其中第一个 for loadfile 上的 Assembly myData 返回我的程序集信息。 System.Reflection.RuntimeAssembly]: {CrystalDecisions.CrystalReports.Engine, Version=11.5.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304 GlobalAssemblyCache: false EntryPoint: null 有什么想法吗?
  • 您能否在我们继续讨论您的下一个问题之前先尝试该示例,除非我的建议已经对您有用..谢谢
  • 好的,现在它正在加载它一开始没有的地方..?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多