KnownType
работает по-другому.Если вы хотите использовать атрибут KnownType, вы должны использовать его в базовом классе, чтобы определить его дочерний элемент:
[DataContract]
[KnownType(typeof(Circle))]
abstract public class Shape
{
[DataMember]
public abstract string Name;
}
Это не будет слишком полезно в вашем случае.Попробуйте установить ServiceKnownType с конкретным классом на вашем интерфейсе:
[ServiceContract(SessionMode=SessionMode.Required)]
[ServiceKnownType(typeof(Circle))]
public interface IMyInterface
{
void UploadDrawing(Drawing dr);
}
Вам не нужно определять Shape
как ServiceKnownType
- это уже известно, поскольку оно используется в Drawing
, но WCF ещене знает тип Circle
.