मुझे लगता है कि आपका मतलब ईमेल एड्रेस क्लास कुछ इस तरह से है:
[BsonSerializer(typeof(EmailAddressSerializer))]
public class EmailAddress
{
private string _value;
public EmailAddress(string value)
{
_value = value;
}
public string Value
{
get { return _value; }
}
}
मैंने ईमेल एड्रेस क्लास को कस्टम सीरिएलाइज़र से जोड़ने के लिए एक विशेषता का उपयोग किया है, जिसे इस तरह कार्यान्वित किया जा सकता है:
public class EmailAddressSerializer : BsonBaseSerializer
{
public override object Deserialize(BsonReader bsonReader, Type nominalType, Type actualType, IBsonSerializationOptions options)
{
if (bsonReader.GetCurrentBsonType() == BsonType.Null)
{
bsonReader.ReadNull();
return null;
}
else
{
var value = bsonReader.ReadString();
return new EmailAddress(value);
}
}
public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options)
{
if (value == null)
{
bsonWriter.WriteNull();
}
else
{
var emailAddress = (EmailAddress)value;
bsonWriter.WriteString(emailAddress.Value);
}
}
}
आप ईमेल पते को मूल दस्तावेज़ के रूप में क्रमबद्ध नहीं कर सकते (क्योंकि यह दस्तावेज़ नहीं है...) लेकिन आप किसी अन्य दस्तावेज़ में एम्बेडेड ईमेल एड्रेस का उपयोग कर सकते हैं। उदाहरण के लिए:
public class Person
{
public int Id { get; set; }
public EmailAddress EmailAddress { get; set; }
}
जिसे आप निम्न जैसे कोड का उपयोग करके परीक्षण कर सकते हैं:
var person = new Person { Id = 1, EmailAddress = new EmailAddress("[email protected]") };
var json = person.ToJson();
var rehyrdated = BsonSerializer.Deserialize<Person>(json);
परिणामी JSON/BSON दस्तावेज़ है:
{ "_id" : 1, "EmailAddress" : "[email protected]" }