StructureMap Список не примитивных типов - PullRequest
0 голосов
/ 07 апреля 2010

Я пытаюсь выяснить, как настроить StructureMap (используя файл конфигурации XML). Один класс имеет конструктор со списком, содержащим экземпляры 2-го класса:

public interface ITestDocType { }

class TestDocType : ITestDocType
{
    public List<AttributeRef> AttrRefs { get; set; }

    public TestDocType(List<AttributeRef> attrRefs)
    {
        AttrRefs = attrRefs;
    }
}

public class AttributeRef
{
    public AttributeRef(string name, string xpath, string value)
    {
        Name = name;
        Xpath = xpath;
        Value = value;
    }

    public string Name { get; set; }
    public string Xpath { get; set; }
    public string Value { get; set; }
}

Я надеялся, что смогу встроить экземпляры AttributeRef в мой файл конфигурации, но не совсем уверен, как это делается (или если это возможно).

<DefaultInstance PluginType="ITestDocType" PluggedType="TestDocType">
    <attrRefs>
       // Would like to specify one to many AttributeRef instances inline here
    </attrRefs>
</DefaultInstance>

1 Ответ

0 голосов
/ 08 апреля 2010

Хорошо .. Я понял это, и это было довольно хорошо описано в документации .. Мне просто нужно было прочитать его несколько раз, чтобы полностью понять.

  <DefaultInstance PluginType="yyy" 
               PluggedType="yyy">
      <attrRefs>
          <Child>
              <DefaultInstance PluginType="xxx"
                               PluggedType="xxx"
                               name="id" x
                               path="/item/@idd" 
                               attrValue="none">
              </DefaultInstance>
          </Child>
      </attrRefs>
  </DefaultInstance>

Как вы видите, "attrRefs" - это имя параметра в конструкторе, который принимает List, и для каждого элемента, который вы хотите добавить в этот список, оберните элемент DefaultInstance внутри элемента "Child".

...