using System.ComponentModel;
using System.Collections.Generic;
public static void Main()
var targetWrapperMock = new Mock<ITargetWrapper<dynamic>>();
someDynamicMetaDataEntity = new
fax_number = "416 - 949 - 9393",
fax_location = "348 Rover Drive, New York, NY, USA",
subject = "Tax Rebate info 2023",
IDictionary<string, object> expando = new ExpandoObject();
expando.Add(nameof(expected.someDynamicMetaDataEntity), ToExpandoObject(expected.someDynamicMetaDataEntity));
targetWrapperMock.SetupGet(w => w.Data).Returns(expando);
var sut = new JohnDoeClass();
var result = sut.MaryDoeMethod(targetWrapperMock.Object);
Console.WriteLine(expected.someDynamicMetaDataEntity.id == result.Id);
public static ExpandoObject ToExpandoObject(object obj)
IDictionary<string, object> expando = new ExpandoObject();
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(obj.GetType()))
expando.Add(property.Name, property.GetValue(obj));
return (ExpandoObject)expando;
public class JohnDoeClass
public dynamic MaryDoeMethod(ITargetWrapper<dynamic> targetWrapper)
IDictionary<string, object> dataset = targetWrapper.Data.someDynamicMetaDataEntity;
FaxId = dataset["fax_id"],
FaxNumber = dataset["fax_number"],
FaxLocation = dataset["fax_location"],
Subject = dataset["subject"]
public T Data { get; set; }
public interface ITargetWrapper<T>
public class TargetWrapper<T> : ITargetWrapper<T>
private Target<T> _target;
_target = new Target<T>();
protected internal TargetWrapper(Target<T> target)
get { return _target.Data; }
set { _target.Data = value; }