如何根据传递给该方法的某个参数检索方法中的XML文件内容?

时间:2017-01-22 10:10:37

标签: c# xml

以下是我尝试根据传递给该方法的参数获取XML文件内容的方法。我在if条件

中遇到异常
  

NullReference:对象引用未设置为对象的实例

代码:

public void restoreClientReceipt(string piClientName)
{
      doc.Load(@"C:\Users\riyazahamed.angadi\Desktop\DeveloperAssignment\TestProject\Receipt.xml");
      XmlNodeList allItems = doc.SelectNodes("/Receipt/clientName/Items");

      foreach (XmlNode node in allItems)
      {
           if (node["clientName"].Attributes["NameOfClient"].Value == piClientName)
           {
               List<string> listOfSavedItems = new List<string>();
               string str = node.Attributes["Name"].Value;
               listOfSavedItems.Add(str);
               Console.WriteLine(node["Items"]);
           }
      }
}

这是我的XML文件,我想从中获取父节点<clientName> <clientName/>中的所有后续元素值

<?xml version="1.0" encoding="utf-8"?>
<Receipt>
    <clientName NameOfClient="SAM">
        <Items Name="Milk, Low fat, 1Liter(11.2each)(4) 44.8" />
        <Items Name="Fish, Salmon (14each)(2) 28" />
        <Items Name="Sum 72.8" />
    </clientName>
</Receipt>

第二个问题是:我的项目中有一个名为OfferTest.dll的DLL,但它没有源代码。

要求是我必须动态加载DLL并检查实现接口之一的类;界面如下所示。

 public interface IOffer
{
 bool checkForOffer(string piName, int piCount, double piPrize, out double  poDiscount);
     bool checkForOffer(string piName, double piWeight, double piPrize, out double poDiscount);
}

也许从DLL我必须找到实现此接口的类(来自DLL)及其中定义的方法。

我对动态加载DLL没有任何了解。

1 个答案:

答案 0 :(得分:0)

  

我的dll在我的项目中命名了OfferTest.dll,但它没有源代码   代码。

     

要求是我必须动态加载dll并检查   正在实施IOffer的类

var type = typeof(IOffer);
var types = Assembly.LoadFile("PathToYourAssembly").GetTypes()
    .Where(p => type.IsAssignableFrom(p));