public static CodeExpression GetDrawItemExpression(DrawingControl dc) { if (dc != null) { DrawingItem di = dc.Item as DrawingItem; if (di != null) { DrawDataRepeater ddp = di.Container as DrawDataRepeater; if (ddp != null) { //((item type)<repeater name>[<drawing item name>]) TypeMappingAttribute tma = null; object[] vs = dc.GetType().GetCustomAttributes(typeof(TypeMappingAttribute), true); if (vs != null && vs.Length > 0) { tma = vs[0] as TypeMappingAttribute; } if (tma != null) { CodeFieldReferenceExpression repeater = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), ddp.Name); CodeIndexerExpression cie = new CodeIndexerExpression(repeater, new CodePrimitiveExpression(dc.Name)); CodeCastExpression cce = new CodeCastExpression(tma.MappedType, cie); return(cce); } } } } return(null); }