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

本文关键字:初始化 返回 对象 方法 扩展 为什么 | 更新日期: 2023-09-27 17:56:51

我编写了一个通用的扩展帮助程序方法来初始化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);
    }

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

似乎ActorRole在内部是同一个字段。

将其设置为 actor然后将其设置为 null 表示它null

该数据的接收者,在 SOAP 规范 1.2 版中称为 SOAP 角色,在 1.1 版中称为 SOAP Actor