Мне удалось успешно выполнить другие методы с использованием отражения, но сейчас я получаю TargetInvocationException
. Хотя TargetInvoationException
указывает на метод methodInfo.Invoke
, пошаговое выполнение кода показывает исключение, возникающее в методе Load
при вызове SampleXMLToDataTable
. SampleXMLToDataTable
- это метод public static
в том же классе, что и 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);
}
}