PropertyInfo property = myobject.GetType().GetProperty(propertyname);
Это правильный подход для извлечения свойства, идентифицируемого именем свойства.Вы уже знаете тип, для которого он объявлен, поэтому вы просто используете
var propertyInfo = CItems.GetProperty(propertyname)
, чтобы получить свойство class .Теперь вам нужно установить это свойство для идентифицированного экземпляра, чтобы вы могли вызывать
propertyInfo.SetValue(<instance>, value);
Как идентифицируются ваши экземпляры?Конечно, вы не возвращаете имя переменной, в которой хранится указатель объекта?
Возможно ли что-то вроде следующего?
IEnumerable<CItems> myItems = new { new CItem("me"), new CItem("conversations") }
void somemethod(string instanceName, string propertyname)
{
var instance = myItems.FirstOrDefault(item => item.Name == instanceName);
if(instance == null) return;
var propertyInfo = CItems.GetProperty(propertyname);
propertyInfo.SetValue(instance, value);
}