public void LoadContent(ContentManager contentManager) { var properties = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly) .Where((propertyInfo) => { return propertyInfo.GetCustomAttribute<ContentAttribute>() != null; }); foreach (var property in properties) { var attribute = property.GetCustomAttribute<ContentAttribute>(); var genericMethod = contentManager.GetType().GetMethod("Load").MakeGenericMethod(property.PropertyType); property.SetValue(this, genericMethod.Invoke(contentManager, new object[] { attribute.ResourceName })); } }