using System.Linq.Expressions;
using System.Collections.Generic;
public interface IPropertyContainer
dynamic Properties { get; }
public class DeviceBase : IDevice, IPropertyContainer
public string Name { get; set; }
protected dynamic _properties = new ExpandoObject();
public dynamic Properties
public class MyDeviceA : DeviceBase
public class MyDeviceB : DeviceBase
public static void Main()
DeviceBase deviceA = new MyDeviceA();
Console.WriteLine(deviceA.Properties.Foo);
DeviceBase deviceB = new MyDeviceB();
Console.WriteLine(deviceB.Properties.Bar);