// Some example code: https://docs.microsoft.com/en-us/dotnet/standard/serialization/examples-of-xml-serialization ConfigMessageSerializerClass CreateClassInfo() { ConfigMessageSerializerClass messageSerializerClassInfo = new ConfigMessageSerializerClass(); ConfigClassInfo classInfo = new ConfigClassInfo(); classInfo.AssemblyName = Assembly.GetExecutingAssembly().FullName; classInfo.ClassFullName = typeof(SimpleXmlTestClass).FullName; ConfigPropertyInfo propertyInfo1 = new ConfigPropertyInfo(); propertyInfo1.Name = "Property1"; propertyInfo1.Attributes.Add(new MessagePropertyAttribute() { PrepadCharacter = 'T' }); propertyInfo1.Attributes.Add(new CalculatedLengthResultAttribute()); //propertyInfo1._messagePropertyAttribute.MessageLengthType = MessageLengthTypes.RestOfMessage; //propertyInfo1._messagePropertyAttribute.PrepadCharacter = 'T'; //propertyInfo1.AuthenticationClass = typeof(int); classInfo.Properties.Add(propertyInfo1); ConfigPropertyInfo propertyInfo2 = new ConfigPropertyInfo(); propertyInfo2.Name = "Property2"; classInfo.Properties.Add(propertyInfo2); ConfigPropertyInfo propertyInfo3 = new ConfigPropertyInfo(); propertyInfo3.Name = "Property3"; var property3MessagePropertyAttribute = new MessagePropertyAttribute(); property3MessagePropertyAttribute.IsBcd = true; //property3MessagePropertyAttribute.IsAuthenticationField = false; //property3MessagePropertyAttribute.ExcludeFromAuthentication = true; property3MessagePropertyAttribute.Length = 20; property3MessagePropertyAttribute.Format = "YYYYMMDDHHMMSS"; property3MessagePropertyAttribute.BlobType = BlobTypes.None; property3MessagePropertyAttribute.VariableLength = true; property3MessagePropertyAttribute.MinLength = 1; property3MessagePropertyAttribute.MaxLength = 18; property3MessagePropertyAttribute.MinimizeVariableLength = true; //property3MessagePropertyAttribute.ExcludeFromLength = false; property3MessagePropertyAttribute.PrepadCharacter = ' '; //property3MessagePropertyAttribute.MessageLengthType = MessageLengthTypes.RestOfMessage; //property3MessagePropertyAttribute.AuthenticationClass = typeof(AuthenticationCrc32); propertyInfo3.Attributes.Add(property3MessagePropertyAttribute); propertyInfo3.Attributes.Add(new CalculatedLengthResultAttribute() { Exclude = false }); propertyInfo3.Attributes.Add(new CalculatedAuthenticationResultAttribute(typeof(CalculatorAuthenticationCrc32))); classInfo.Properties.Add(propertyInfo3); messageSerializerClassInfo.ClassInfo = classInfo; return(messageSerializerClassInfo); }
void VerifyClassInfo(ConfigMessageSerializerClass classInfoToVerify, ConfigMessageSerializerClass classInfoExpected) { Assert.That(classInfoToVerify.ClassInfo, Is.Not.Null); Assert.That(classInfoToVerify.ClassInfo.AssemblyQualifiedName, Is.EqualTo(classInfoExpected.ClassInfo.AssemblyQualifiedName)); VerifyMessageSerializedClassAttribute(classInfoToVerify.ClassInfo.MessageClassAttribute, classInfoExpected.ClassInfo.MessageClassAttribute, classInfoToVerify.ClassInfo.AssemblyQualifiedName); Assert.That(classInfoToVerify.ClassInfo.Properties, Is.Not.Null); Assert.That(classInfoToVerify.ClassInfo.Properties.Count, Is.EqualTo(classInfoExpected.ClassInfo.Properties.Count)); for (int index = 0; index < classInfoToVerify.ClassInfo.Properties.Count; ++index) { ConfigPropertyInfo propertyInfoToVerify = classInfoToVerify.ClassInfo.Properties[index]; ConfigPropertyInfo propertyInfoExpected = classInfoExpected.ClassInfo.Properties[index]; Assert.That(propertyInfoToVerify.Name, Is.EqualTo(propertyInfoExpected.Name)); //VerifyMessageSerializedPropertyAttribute(propertyInfoToVerify._messagePropertyAttribute, propertyInfoExpected._messagePropertyAttribute, string.Format("{0}::Index{1}", classInfoToVerify.ClassInfo, index)); VerifyMessageSerializedPropertyAttribute(propertyInfoToVerify.GetFirstAttributeOfType <MessagePropertyAttribute>() ?? new MessagePropertyAttribute(), propertyInfoExpected.GetFirstAttributeOfType <MessagePropertyAttribute>() ?? new MessagePropertyAttribute(), string.Format("{0}::Index{1}", classInfoToVerify.ClassInfo, index)); VerifyCalculatedLengthResultAttribute(propertyInfoToVerify.GetFirstAttributeOfType <CalculatedLengthResultAttribute>() ?? new CalculatedLengthResultAttribute(), propertyInfoExpected.GetFirstAttributeOfType <CalculatedLengthResultAttribute>() ?? new CalculatedLengthResultAttribute(), string.Format("{0}::Index{1}", classInfoToVerify.ClassInfo, index)); VerifyCalculatedAuthenticationResultAttribute(propertyInfoToVerify.GetFirstAttributeOfType <CalculatedAuthenticationResultAttribute>() ?? new CalculatedAuthenticationResultAttribute(typeof(CalculatorAuthenticationCrc16)), propertyInfoExpected.GetFirstAttributeOfType <CalculatedAuthenticationResultAttribute>() ?? new CalculatedAuthenticationResultAttribute(typeof(CalculatorAuthenticationCrc16)), string.Format("{0}::Index{1}", classInfoToVerify.ClassInfo, index)); } }