abstract class internalProp { abstract public valType GetValue(); } class internalProp : internalProp { propType internalVal; public internalProp(propType newVal) { internalVal = newVal; } public override valType GetValue() { return (valType)internalVal; } } class myclass { internalProp m_internalProp; void SetColor(object obj) { Type type = typeof(obj); m_internalProp = new InternalProp(obj); } type GetColor() { return m_internalProp.GetValue(); } }