为什么这个扩展方法没有初始化返回的对象?

时间:2015-06-17 16:46:16

标签: c# generics extension-methods

我编写了一个通用的Extension helper方法来初始化SoapHeader的一些参数,但是它没有更新返回的对象。

我错过了什么?

using System.Web.Services.Protocols;

    public class Header: SoapHeader {}

    public class WS {
      public Header securityHeader {
        get;
        set;
      }

    }
    public static class SecurityHeaderExtensions {

      public static T GetSecurityHeader < T > (this T header, string actor, string role) where T: SoapHeader, new() {

        T result = new T() {
          Actor = actor, Role = role
        };

        Console.WriteLine("Actor: " + actor); //prints actor
        Console.WriteLine("Actor: " + result.Actor); //prints blank
        return result;

      }
    }

    void Main() {
      var ws = new WS();
      ws.securityHeader = ws.securityHeader.GetSecurityHeader("actor", null);

    }

1 个答案:

答案 0 :(得分:5)

似乎ActorRole在内部是相同的字段。

将其设置为actor,然后将其设置为null意味着它null

  

该数据的收件人,在SOAP规范1.2版中称为SOAP Role ,在1.1版中称为SOAP Actor