Это должно сработать, поэтому есть то, о чем вы нам не говорите. Вы уверены, что это автоматически реализованное свойство? Объяснение, согласующееся с тем, что вы видите, состоит в том, что свойство не реализуется автоматически и не имеет установщика.
То есть
public class Foo { public int Bar { get; set; } }
typeof(Foo).GetProperty("Bar").SetValue(foo, 42);
удастся, но
public class Foo { public int Bar { get { return 42; } } }
typeof(Foo).GetProperty("Bar").SetValue(foo, 42);
не будет и выдаст исключение с сообщением, которое вы видите.