在SoapHeader的實現中,微軟是不是也沒有做到最佳實踐?

[ 1224 查看 / 2 回复 ]

public class MySoapHeader : System.Web.Services.Protocols.SoapHeader
        {
            public string Username;
            public string Password;

        }

很明顯,這樣的成員變量定義方法,明顯有違反面向對象的‘封裝性’的嫌疑。如果是3.0之前的CLR,應該寫成一個private string _username;并額外提供一對屬性器(Setter和Getter)。

如果是3.0之后的CLR,那么代碼將會非常優雅。
  1.   public class MySoapHeader : System.Web.Services.Protocols.SoapHeader
  2.         {
  3.             //public string Username;
  4.             public string Username { get; set; }
  5.             //public string Password;
  6.             public string Password { get; set; }

  7.         }
复制代码
TOP

經過測試實踐表明,3.0新特性的這種屬性器是可以幫我們搞定 SoapHeader對象 并且為其中的對象屬性賦值的。

2.0之前沒有測試過,因為這樣的賦值一定是通過反射,用屬性器的Set方法把 對應變量名的屬性給付上值。
TOP

屬性器的表達方式,真的很優雅。。
TOP