, , . :
[OperationContract]
BaseClass Foo();
:
public Foo()
{
return DerivedClass();
}
DerivedClass BaseClass. BaseClass:
[KnownType(typeof(DerivedClass))]
[DataContract]
public class BaseClass { }
[ServiceKnownType] :
[ServiceContract]
[ServiceKnownType(typeof(DerivedClass))]
public interface IService
{
[OperationContract]
BaseClass Foo();
}
:
<system.runtime.serialization>
<dataContractSerializer>
<declaredTypes>
<add type="SomeNs.BaseClass, SomeAssembly">
<knownType type="SomeNs.DerivedClass, SomeAssembly"/>
</add>
</declaredTypes>
</dataContractSerializer>
</system.runtime.serialization>
UPDATE:
, :
, .NET Framework : , SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, Single, Double, Boolean, Char, Decimal, Object String.