【发布时间】:2014-06-24 00:44:32
【问题描述】:
我有以下代码。但是,它在SetValue 上有一个运行时异常。什么可能导致错误?
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
例外是:
System.ArgumentException 未处理 消息=未找到属性设置方法。 源=mscorlib 堆栈跟踪: 在 System.Reflection.RuntimePropertyInfo.SetValue(对象 obj,对象值,BindingFlags invokeAttr,活页夹活页夹,对象 [] 索引,CultureInfo 文化) 在 System.Reflection.RuntimePropertyInfo.SetValue(对象 obj,对象值,对象 [] 索引) 在 MyApp.ErrorLogPresenter.ApplyFilter[T](T curr, Expression`1 prev) in d:\..cs:line 50【问题讨论】:
-
请也发布异常。
-
忽略索引属性 [] 上的索引或尝试设置只有 getter 的属性...
-
"找不到属性集方法。" - 对我来说听起来很清楚;这个属性有setter吗?我们能看到有问题的房产吗?
-
@AK_ 行引发异常不使用索引器?
-
@MarcGravell 非常感谢。我忘了接口没有定义setter。
标签: c# reflection