private void ApplyNewStyle <T>(string propertyName, T newStyle, AnnotaionStyleType annotationStyleType = AnnotaionStyleType.LayerStyle) where T : Styles.Style { ValueItem valueItem = layerStyle.ValueItems.LastOrDefault().CloneDeep(); if (annotationStyleType == AnnotaionStyleType.FileLinkStyle) { valueItem = fileLinkStyle.ValueItems.LastOrDefault().CloneDeep(); newStyle.Name = "FileLinkStyle"; } valueItem.Value = RandomString(); valueItem.GetType().GetProperty(propertyName).GetSetMethod().Invoke(valueItem, new object[] { newStyle }); TextStyle textStyle = newStyle as TextStyle; if (textStyle != null) { switch (annotationStyleType) { case AnnotaionStyleType.LayerStyle: default: valueItem.DefaultTextStyle.PointPlacement = PointPlacement.LowerRight; break; case AnnotaionStyleType.FileLinkStyle: valueItem.DefaultTextStyle.PointPlacement = PointPlacement.LowerCenter; break; } } switch (annotationStyleType) { case AnnotaionStyleType.FileLinkStyle: fileLinkStyle.ValueItems.Add(valueItem); break; case AnnotaionStyleType.LayerStyle: default: layerStyle.ValueItems.Add(valueItem); break; } }