public void ReadIntoProperty(IVgXmlSerializerContext sContext, IVgXmlTargetedPropertyContext pContext)
        {
            if (pContext.IsCollection())
            {
                var entityValue = ReadEntity(sContext, pContext.PropertyType.GetGenericArguments().First(), pContext.EntityType);
                if (entityValue == null)
                {
                    return;
                }

                pContext.AddToCollection(entityValue);
            }
            else
            {
                pContext.SetValue(ReadEntity(sContext, pContext.PropertyType, pContext.EntityType));
            }
        }
        public void WriteFromProperty(IVgXmlSerializerContext sContext, IVgXmlTargetedPropertyContext pContext)
        {
            if (pContext.GetValue() == null)
            {
                return;
            }

            if (pContext.IsCollection())
            {
                var collection = pContext.GetValue() as IEnumerable;
                foreach (var item in collection)
                {
                    WriteEntity(sContext, item, pContext.GetBestMatchingNameFor(item), pContext.EntityType);
                }
            }
            else
            {
                WriteEntity(sContext, pContext.GetValue(), pContext.GetBestMatchingNameFor(pContext.GetValue()), pContext.EntityType);
            }
        }