Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I have the following code. However, it has a runtime exception on SetValue . What may cause the error?

var _filter = new Filter(....); // Filter implemented IFilter
ApplyFilter(_view.Name, x => x.Name); 
private void ApplyFilter<T>(T curr, Expression<Func<IFilter, T>> prev) 
    var expr = (MemberExpression)prev.Body;
    var prop = (PropertyInfo)expr.Member;
    if (!EqualityComparer<T>.Default.Equals(curr, (T)_filter[prop.Name]))
        prop.SetValue(_filter, curr, null); // Error
        ..... // do something on _filter

The exception is:

System.ArgumentException was unhandled Message=Property set method not found. Source=mscorlib StackTrace: at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture) at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index) at MyApp.ErrorLogPresenter.ApplyFilter[T](T curr, Expression`1 prev) in d:\....cs:line 50 ignoring the index on an indexing property [] or trying to set a property that only has a getter... – AK_ Jun 23, 2014 at 16:38 "Property set method not found." - sounds pretty clear to me; does this property have a setter? Can we see the property in question? – Marc Gravell Jun 23, 2014 at 16:40

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.