C# 为什么这个扩展方法不初始化返回的对象?
我编写了一个泛型扩展助手方法来初始化SoapHeader的一些参数,但是它没有更新返回的对象 我错过了什么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
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
的属性设置程序正在丢弃该值。很好的侦察。这一点都不明显。