Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么这个扩展方法不初始化返回的对象?_C#_Generics_Extension Methods - Fatal编程技术网

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

C# 为什么这个扩展方法不初始化返回的对象?,c#,generics,extension-methods,C#,Generics,Extension Methods,我编写了一个泛型扩展助手方法来初始化SoapHeader的一些参数,但是它没有更新返回的对象 我错过了什么 using System.Web.Services.Protocols; public class Header: SoapHeader {} public class WS { public Header securityHeader { get; set; } } public static

我编写了一个泛型扩展助手方法来初始化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);

    }
使用System.Web.Services.Protocols;
公共类标头:SoapHeader{}
公共类WS{
公共标头安全标头{
得到;
设置
}
}
公共静态类SecurityHeaderExtensions{
公共静态T GetSecurityHeader(此T头,字符串参与者,字符串角色),其中T:SoapHeader,new(){
T结果=新的T(){
演员=演员,角色=角色
};
Console.WriteLine(“Actor:+Actor);//打印Actor
Console.WriteLine(“Actor:+result.Actor);//打印为空白
返回结果;
}
}
void Main(){
var-ws=new-ws();
ws.securityHeader=ws.securityHeader.GetSecurityHeader(“actor”,null);
}

似乎
Actor
Role
在内部是同一个字段

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

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


你能澄清一下你的期望和发生的事情吗?
ws.securityHeader
的类型是什么?看起来
Actor
的属性设置程序正在丢弃该值。很好的侦察。这一点都不明显。