Browse Source

Added no-argument constructor to BsonDiscriminatorAttribute. Modified SerializePolymorphicClassTests to test [BsonDiscriminatorOptions(Required = true)].

pull/28/head
rstam 15 years ago
parent
commit
1e03d90c07
  1. 3
      Bson/DefaultSerializer/Attributes/BsonDiscriminatorAttribute.cs
  2. 4
      Bson/DefaultSerializer/BsonClassMap.cs
  3. 6
      BsonUnitTests/DefaultSerializer/SerializePolymorphicClassTests.cs

3
Bson/DefaultSerializer/Attributes/BsonDiscriminatorAttribute.cs

@ -27,6 +27,9 @@ namespace MongoDB.Bson.DefaultSerializer {
#endregion
#region constructors
public BsonDiscriminatorAttribute() {
}
public BsonDiscriminatorAttribute(
string discriminator
) {

4
Bson/DefaultSerializer/BsonClassMap.cs

@ -428,7 +428,9 @@ namespace MongoDB.Bson.DefaultSerializer {
var discriminatorAttribute = (BsonDiscriminatorAttribute) classType.GetCustomAttributes(typeof(BsonDiscriminatorAttribute), false).FirstOrDefault();
if (discriminatorAttribute != null) {
discriminator = discriminatorAttribute.Discriminator;
if (discriminatorAttribute.Discriminator != null) {
discriminator = discriminatorAttribute.Discriminator;
}
discriminatorIsRequired = discriminatorAttribute.Required;
}

6
BsonUnitTests/DefaultSerializer/SerializePolymorphicClassTests.cs

@ -21,6 +21,7 @@ using System.Text;
using NUnit.Framework;
using MongoDB.Bson;
using MongoDB.Bson.DefaultSerializer;
using MongoDB.Bson.IO;
using MongoDB.Bson.Serialization;
@ -31,6 +32,7 @@ namespace MongoDB.BsonUnitTests.DefaultSerializer {
public string FA { get; set; }
}
[BsonDiscriminator(Required = true)]
private abstract class B : A {
public string FB { get; set; }
}
@ -103,7 +105,7 @@ namespace MongoDB.BsonUnitTests.DefaultSerializer {
public void TestSerializeDasD() {
D d = new D { FA = "a", FB = "b", FD = "d" };
var json = d.ToJson();
var expected = ("{ 'FA' : 'a', 'FB' : 'b', 'FD' : 'd' }").Replace("'", "\""); // no discriminator
var expected = ("{ '_t' : 'D', 'FA' : 'a', 'FB' : 'b', 'FD' : 'd' }").Replace("'", "\""); // has discriminator because B has DiscriminatorIsRequired true
Assert.AreEqual(expected, json);
var bson = d.ToBson();
@ -139,7 +141,7 @@ namespace MongoDB.BsonUnitTests.DefaultSerializer {
public void TestSerializeEasE() {
E e = new E { FA = "a", FB = "b", FE = "e" };
var json = e.ToJson();
var expected = ("{ 'FA' : 'a', 'FB' : 'b', 'FE' : 'e' }").Replace("'", "\""); // no discriminator
var expected = ("{ '_t' : 'E', 'FA' : 'a', 'FB' : 'b', 'FE' : 'e' }").Replace("'", "\""); // has discriminator because B has DiscriminatorIsRequired true
Assert.AreEqual(expected, json);
var bson = e.ToBson();

Loading…
Cancel
Save