BaseModel
を返すサービスメソッドがあります。これには派生クラスが多数あります。私のサービスは要求されたアイテムを得ることができる、つまりDerivedClass1 : BaseModel
に解決してそれを返すことを望んでいました。もちろん、私のサービスの戻り値のタイプはBaseModel
です。私は、派生クラスのリストが変化していると私はいつもこれを更新したくないので、私はどこ解決策を見つけたKnownType
XmlInclude WCFのKnowtypesソリューションに派生したものすべて
[KnownType(typeof(DerivedClass1))]
[DataContract]
public class BaseModel {
...
として私BaseModel定義DerivedClass1
に追加する必要がありました。この場合
[KnownType("DerivedTypes")]
[Serializable]
public class BaseModel {
...
private static Type[] DerivedTypes() {
return (from t in Assembly.GetExecutingAssembly().GetTypes() where t.IsSubclassOf(typeof(BaseModel)) select t).ToArray();
}
...
だから今、すべての派生クラスはKnownType
としてリストされている:私はこれを行うことができます。すばらしいです! 私は必要とされるために同じ必要がありますXmlInclude
あまりにも。私は使用しています
[System.Xml.Serialization.XmlInclude(typeof(DerivedClass1))]
注釈。同様のことをする方法はありますか?これを行うより良い方法はありますか?どういうわけかできるか
[System.Xml.Serialization.XmlInclude("DerivedTypes")]
ありがとう!