开发者

Hiding base class property using new keyword in WCF

I have a Scneario like this in my Server DLL class library.

 [DataContract]
public class Base
{
    [DataMember]
    public string Info { get; set; }
}

[DataContract]
public class Child : Base
{
    [DataMember]
    public new int Info { get; set; }


    public int Save()
    { 

    }
}

My WCF Proxy at client side creates a Reference class. It Renames "Info" to "Info1". And shows proper properties in Base class.My code compiles great. So far so good. When I try to run ChildProxy.Save() from my client it gives me error Saying

"There was an error while trying to serialize parameter http://tempuri.org/:info. The InnerException message was 'Type 'ClientServiceLayer.InfoService.Info' with data contract name 'ArrayOfInfo:http://schemas.datacontract.org/2004/07/Info_DLL' is not expected. Add any t开发者_C百科ypes not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.'. Please see InnerException for more details. "

How to hide the property of base class in WCF?

UPDATE:

Here is the call on the client-side

InvoiceServiceClient infoProxy = new InfoServiceClient(); 
invId = invfoProxy.Save();


As stated here:

You can't. Although the Child class is "hiding" the Info property of its base class, the attribute is being read by the serializer.

You could try adding [DataMember(Name = "Info")] to the child class and see what happens.


You could use KnownType Attribute in your DataContract

MSDN Data Contract Known Types

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜