Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用反射时方法不可用-TargetInError_C#_.net_Reflection - Fatal编程技术网

C# 使用反射时方法不可用-TargetInError

C# 使用反射时方法不可用-TargetInError,c#,.net,reflection,C#,.net,Reflection,我已经能够使用反射成功地执行其他方法,但现在我得到了一个TargetInvocationException。尽管targetInvationException将我指向methodInfo.Invoke方法,但单步执行代码显示调用samplexmltodatable时Load方法中发生的异常。SampleXMLToDataTable是与Load在同一类中的公共静态方法。代码试图输入SampleXMLToDataTable时引发错误 从使用反射调用的其他方法中调用方法是否有问题 通过反射调用的代码:

我已经能够使用反射成功地执行其他方法,但现在我得到了一个
TargetInvocationException
。尽管
targetInvationException
将我指向
methodInfo.Invoke
方法,但单步执行代码显示调用
samplexmltodatable
Load
方法中发生的异常。
SampleXMLToDataTable
是与
Load
在同一类中的
公共静态
方法。代码试图输入
SampleXMLToDataTable
时引发错误

从使用反射调用的其他方法中调用方法是否有问题

通过反射调用的代码:

 private Object CreateXMLDataLoaderInstance(string xml)
 {
  object o = null;

  Assembly demandAssembly = LoadSampleDemandAssembly();
  Type assemblyType = demandAssembly.GetType("SampleDemand.XMLDataLoader");
  MethodInfo methodInfo = assemblyType.GetMethod("Load");
  o = Activator.CreateInstance(assemblyType, new Object[1] { true });

  Object[] oParamArray2 = new Object[1];

  methodInfo.Invoke(o, new Object[1] { xml });//TargetInvocationException

  return o;
 }
以及它试图调用的方法:

 public void Load(string xml)
{
  XmlDocument xDoc = new XmlDocument();
  xDoc.LoadXml(xml);

  XmlNode settingsNode = null;
  foreach (XmlNode xNode in xDoc.FirstChild.ChildNodes)
  {
    string name = xNode.Name;
    string wsx = xNode.ChildNodes[0].OuterXml;

    XmlDocument doc = new XmlDocument();
    doc.LoadXml(wsx);
    DataTable dt = SampleXMLToDataTable(doc);//Where the code breaks
    XMLSample xmlWS = new XMLSample(dt, wsx, name);

    this.sample.Add(name, xmlWS);
  }
  if (settingsNode != null)
  {
    settings = GetSettings(settingsNode);
  }
}
从使用反射调用的其他方法中调用方法是否有问题


否,
TargetInvocationException
表示反射成功调用了该方法,但目标方法引发了异常。查看
TargetInvocationException
InnerException
属性,以了解由目标方法引发的异常的详细信息。

您的错误只意味着正在调用的方法中的某个位置引发异常。这正是你所指出的。您的
SampleXMLToDataTable
方法正在引发异常。这与通过反射调用它无关。我怀疑如果你直接调用它,你会在完全相同的位置得到一个异常


这不是反射的限制,您只是得到了一个不同的异常,因为您是通过反射调用它的,尽管
TargetInvocationException
的内部异常应该提供更多信息。

问题已解决:原来SampleXMLToDataTable使用的是一个卸载的程序集。