我有一个非常奇怪的问题。目前,我正在将带有Prism的Windows通用应用程序(Win 8.1 + WinPhone 8.1)移植到带有MvvmCross的CrossPlattform解决方案。 首先,非常感谢MvvmCross的所有工作 - 这太棒了。
我的问题现在是System.Activator
类。我在我的通用应用程序中使用了this approach进行验证,我尝试移植它。现在一切都正常编译,但在运行时会抛出null引用异常。我发现它是Acitivator是null。当我尝试在立即窗口中访问它时,它说:
error CS0103: The name 'Activiator' does not exist in the current context
代码在每个Model中执行,并在基类构造函数中实现:
protected ModelBase()
{
foreach (var property in this.GetType().GetRuntimeProperties())
{
var type = typeof(Property<>).MakeGenericType(property.PropertyType);
var prop = (IProperty)Activator.CreateInstance(type);
this.Properties.Add(property.Name, prop);
prop.ValueChanged += (s, e) =>
{
RaisePropertyChanged(property.Name);
Validate();
};
}
}
有什么想法吗?
答案 0 :(得分:0)
感谢所有答案。我现在感觉有点尴尬,因为我认为问题出来了,这完全是我的错:)。
@Anders:你是对的,我在立即窗口中拼错了激活器,这就是为什么错误出现在第一位 - 愚蠢。
第二个问题是生成的Object的ctor。
public Property()
{
this.Errors.CollectionChanged += (s, e) => RaisePropertyChanged("IsValid");
Errors = new ObservableCollection<string>();
}
你找到了错误吗? Jap,在未创建的对象上连接事件是一个坏主意。抱歉浪费你的时间:/并谢谢。