ओडाटा मीडिया प्रकार फॉर्मेटर अब अधिक विस्तार योग्य है। नमूने का पालन करें।
1) यह तय करें कि शीर्षक, लेखक और फ़ीड
public class AtomMetadataFeedSerializer : ODataFeedSerializer
{
public AtomMetadataFeedSerializer(IEdmCollectionTypeReference edmType, ODataSerializerProvider serializerProvider)
: base(edmType, serializerProvider)
{
}
public override ODataFeed CreateODataFeed(IEnumerable feedInstance, ODataSerializerContext writeContext)
{
ODataFeed feed = base.CreateODataFeed(feedInstance, writeContext);
feed.Atom().Title = new AtomTextConstruct { Kind = AtomTextConstructKind.Text, Text = "My Awesome Feed" };
return feed;
}
}
public class CustomSerializerProvider : DefaultODataSerializerProvider
{
public override ODataEntrySerializer CreateEdmTypeSerializer(IEdmTypeReference edmType)
{
if (edmType.IsCollection() && edmType.AsCollection().ElementType().IsEntity())
{
// feed serializer
return new AtomMetadataFeedSerializer(edmType.AsCollection(), this);
}
return base.CreateEdmTypeSerializer(edmType);
}
}
और रजिस्टर कस्टम serializer प्रदाता का उपयोग कर के लिए अद्यतन तत्वों पर चला जाता है,
config.Formatters.InsertRange(0, ODataMediaTypeFormatters.Create(new CustomSerializerProvider(), new DefaultODataDeserializerProvider()));
2) अनुकूलित लिंक संपादित
public class CustomEntityTypeSerializer : ODataEntityTypeSerializer
{
public CustomEntityTypeSerializer(IEdmEntityTypeReference edmType, ODataSerializerProvider serializerProvider)
: base(edmType, serializerProvider)
{
}
public override ODataEntry CreateEntry(EntityInstanceContext entityInstanceContext, ODataSerializerContext writeContext)
{
ODataEntry entry = base.CreateEntry(entityInstanceContext, writeContext);
if (notProduceEditLinks)
{
entry.EditLink = null;
}
return entry;
}
}
public class CustomSerializerProvider : DefaultODataSerializerProvider
{
public override ODataEntrySerializer CreateEdmTypeSerializer(IEdmTypeReference edmType)
{
if (edmType.IsEntity())
{
// entity type serializer
return new CustomEntityTypeSerializer(edmType.AsEntity(), this);
}
return base.CreateEdmTypeSerializer(edmType);
}
}
और ऊपर के रूप में कस्टम serializer प्रदाता पंजीकृत करें।
हम अभी भी परिदृश्य 3 i.e aliasing प्रकार के नाम और नामस्थान का समर्थन नहीं करते हैं।
स्रोत
2013-03-14 02:20:15
हम अभी ओडेटामीडिया टाइप टाइपरेटर को एक्स्टेंसिबिलिटी हुक जोड़ने पर काम कर रहे हैं। इसके बाद आप परमाणु मेटाडेटा को अनुकूलित करने में सक्षम होना चाहिए। –
और वैकल्पिक संपादन लिंक के संबंध में, एक कोडप्लेक्स [कार्य आइटम] (http://aspnetwebstack.codeplex.com/workitem/501) इसके लिए खुला है –