16进制转换10进制 整数部分以及小数部分如何转换
在日常的计算机编程和学习中我们经常会与各种进制打交道,在没有确定一个正确的读法之前,人们在阅读十六进制或八进制数字或者十进制以外的进制时
WCF就是专门用于服务定制、发布与运行以及消息传递和处理的一组专门类的集合,也就是所谓的“类库”。这些类通过一定方式被组织起来,共同协作,并为开发者提供了一个统一的编程模式。WCF之所以特殊,是在于它所应对的场景与普通的.NET类库不同,它主要用于处理进程间乃至于机器之间消息的 传递与处理,同时它引入了SOA的设计思想,以服务的方式公布并运行,以方便客户端跨进程和机器对服务进行调用。实际上,WCF就是微软对于分布式处理的 编程技术的集大成者,它将DCOM、Remoting、Web Service、WSE、MSMQ集成在一起,从而降低了分布式系统开发者的学习曲线,并统一了开发标准。
那么,对于WCF服务代理里面的“FieldSpecified”属性如何理解?
WCFDataContract,如下所示:
namespace MyCompanyName.Services.Wcf{
[DataContract(Namespace =”http://mycompanyname/services/wcf”)]
[Serializable]
publicclassDataContractBase
{
[DataMember]
publicDateTime EditDate {get;set;}
// code omitted for brevity…
}}
当我在Visual Studio中添加对此服务的引用时,将生成此代理代码:
/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute(“System.Xml”,”2.0.50727.3082″)][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute(“code”)][System.Xml.Serialization.XmlTypeAttribute(Namespace=”http://mycompanyname/services/wcf”)]publicpartial classDataContractBase :object,System.ComponentModel.INotifyPropertyChanged {
privateSystem.DateTime editDateField;
privatebool editDateFieldSpecified;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=0)]
publicSystem.DateTime EditDate {
get{
returnthis.editDateField;
}
set{
this.editDateField =value;
this.RaisePropertyChanged(“EditDate”);
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
publicbool EditDateSpecified {
get{
returnthis.editDateFieldSpecified;
}
set{
this.editDateFieldSpecified =value;
this.RaisePropertyChanged(“EditDateSpecified”);
}
}
// code omitted for brevity…}
正如你所看到的,除了生成一个支持属性外EditDate,还会<propertyname>Specified生成一个附加属性。一切都很好,除了当我做以下事情时:
DataContractBase myDataContract =newDataContractBase();
myDataContract.EditDate =DateTime.Now;
newMyServiceClient.Update(newUpdateRequest(myDataContract));
该EditDate服务的端点没有被拾起(没有出现在传输的XML中)。
我调试了代码,发现虽然我正在设置EditDate,但是该EditDateSpecified属性并没有true像我预期的那样设置; 因此,XML序列化程序忽略了值EditDate,即使它设置为有效值。
作为一个快速入侵,我修改了EditDate属性,如下所示:
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=0)]
publicSystem.DateTime EditDate {
get{
returnthis.editDateField;
}
set{
this.editDateField =value;
// hackhackhack
if(value !=default(System.DateTime))
{
this.EditDateSpecified =true;
}
// end hackhackhack
this.RaisePropertyChanged(“EditDate”);
}
}
现在代码按预期工作,但当然每次我重新生成代理时,我的修改都会丢失。我可以将调用代码更改为以下内容:
DataContractBase myDataContract =newDataContractBase();
myDataContract.EditDate =DateTime.Now;
myDataContract.EditDateSpecified =true;
newMyServiceClient.Update(newUpdateRequest(myDataContract));
但是这也看起来像是浪费时间。