如何在C#中使用类型和属性名称从XML创建动态对象?

时间:2020-07-16 10:29:12

标签: c# xml xml-parsing dynamicobject

<root>
  <source>
    <fields>
      <string propertyName="Status" class="System.String" nullable="true" valueInputType="all" displayName="status" description="Condition" maxLength="150" />
      
      <function methodName="Calculator" displayName="Calculator" includeInCalculations="true">
        <parameters>
          <input valueInputType="all" class="System.String" type="string" nullable="true" maxLength="256" />
        </parameters>
        <returns valueInputType="all" class="System.Double" type="numeric" nullable="false" min="-9007199254740992" max="9007199254740992" allowDecimal="true" allowCalculation="true" />
      </function>
    </fields>
  </source>
</root>

我必须生成一个类似于以下XML的对象:

[Field(DisplayName = "Status", Max = 150, Description = "Condition")]
        public string Status;
[Method(DisplayName = "Calculator")]
        public double Calculator(string st)
        {
            double num = st.length();
            return num;
        }

即使我收到Object类型的信息,我什至都不能直接使用该对象。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情

<div class="row">
  <form method="post" action="#" class="contact-form">
    <div class="row">
      <div class="col span-1-of-3">
        <ul class="form-container">
          <li class="form-features">
            <label for="first-name">First name:</label>
          </li>
        </ul>
      </div>
      <div class="col span-2-of-3">
        <ul class="form-container">
          <li class="form-features">
            <input type="text" name="first-name" id="first-name" required>
          </li>
        </ul>
      </div>
    </div>
    <div class="row">
      <div class="col span-1-of-3">
        <ul class="form-container">
          <li class="form-features">
            <label for="last-name">Last name:</label>
          </li>
        </ul>
      </div>
      <div class="col span-2-of-3">
        <ul class="form-container">
          <li class="form-features">
            <input type="text" name="last-name" id="last-name" required>
          </li>
        </ul>
      </div>
    </div>
    <div class="row">
      <div class="col span-1-of-3">
        <ul class="form-container">
          <li class="form-features">
            <label for="business-email">Business email:</label>
          </li>
        </ul>
      </div>
      <div class="col span-2-of-3">
        <ul class="form-container">
          <li class="form-features">
            <input type="email" name="business-email" id="business-email" required>
          </li>
        </ul>
      </div>
    </div>
    <div class="row">
      <div class="col span-1-of-3">
        <ul class="form-container">
          <li class="form-features">
            <label for="phone-number">Phone number:</label>
          </li>
        </ul>
      </div>
      <div class="col span-2-of-3">
        <ul class="form-container">
          <li class="form-features">
            <input type="text" name="phone-number" id="phone-number" required>
          </li>
        </ul>
      </div>
    </div>

    <div class="row">
      <div class="col span-1-of-3">
        <ul class="form-container">
          <li class="form-features">
            <label for="company-name">Company name:</label>
          </li>
        </ul>
      </div>
      <div class="col span-2-of-3">
        <ul class="form-container">
          <li class="form-features">
            <input type="text" name="company-name" id="company-name" required>
          </li>
        </ul>
      </div>
    </div>
    <div class="row">
      <div class="col span-1-of-3">
        <ul class="form-container">
          <li class="form-features">
            <label for="cosize">Company size:</label>
          </li>
        </ul>
      </div>
      <div class="col span-2-of-3">
        <ul class="form-container">
          <li class="form-features">
            <select name="cosize" id="cosize">
              <option value="small" selected>1-100</option>
              <option value="medium">101-2000</option>
              <option value="large">2001+</option>
            </select>
          </li>
        </ul>

      </div>
    </div>
    <div class="row">
      <div class="col span-1-of-3">
        <ul class="form-container">
          <li class="form-features">
            <label>How did you find us? :</label>
          </li>
        </ul>
      </div>
      <div class="col span-2-of-3">
        <ul class="form-container">
          <li class="form-features">
            <select name="find-us" id="find-us">
              <option value="search" selected>Search engine</option>
              <option value="friends">Friends</option>
              <option value="ad">Advertisement</option>
              <option value="other">Other</option>
            </select>
          </li>
        </ul>
      </div>
    </div>
    <div class="row">
      <div class="col span-1-of-3">
        <ul class="form-container">
          <li class="form-features">
            <label>Tell us what you wnat here</label>
          </li>
        </ul>
      </div>
      <div class="col span-2-of-3">
        <ul class="form-container">
          <li class="form-features">
            <textarea name="message"></textarea>
          </li>
        </ul>
      </div>
    </div>
    <div class="row">
      <div class="col span-1-of-3">
        <ul class="form-container">
          <li class="form-features">
            <label>&nbsp;</label>
          </li>
        </ul>
      </div>
      <div class="col span-2-of-3">
        <ul class="form-container">
          <li class="form-features">
            <input type="submit" value="Send message">
          </li>
        </ul>
      </div>
    </div>
  </form>
</div>