首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fody.PropertyChanged -无法注入EventInvoker方法

Fody.PropertyChanged -无法注入EventInvoker方法
EN

Stack Overflow用户
提问于 2019-03-27 22:17:09
回答 1查看 645关注 0票数 1

我有一个继承自BaseViewModel的ConfigurationViewModel。BaseViewModel放在一个单独的项目中,并实现了一个INotifyPropertyChanged接口。这个单独的项目没有安装Fody.PropertyChanged。

当我尝试构建解决方案时,我遇到了异常:

代码语言:javascript
复制
Failed to execute weaver C:\Users\Rafal\.nuget\packages\propertychanged.fody\2.6.0\build\..\netclassicweaver\PropertyChanged.Fody.dll
Type:
System.Exception
StackTrace:
   at InnerWeaver.ExecuteWeavers() in C:\projects\fody\FodyIsolated\InnerWeaver.cs:line 186
   at InnerWeaver.Execute() in C:\projects\fody\FodyIsolated\InnerWeaver.cs:line 109
Source:
FodyIsolated
TargetSite:
Void ExecuteWeavers()
Could not inject EventInvoker method on type 'Designer.VVM.ConfigurationViewModel'. It is possible you are inheriting from a base class and have not correctly set 'EventInvokerNames' or you are using a explicit PropertyChanged event and the event field is not visible to this instance. Either correct 'EventInvokerNames' or implement your own EventInvoker on this class. If you want to suppress this place a [DoNotNotifyAttribute] on Designer.VVM.ConfigurationViewModel.
Type:
Fody.WeavingException
StackTrace:
   at ModuleWeaver.InjectMethod(TypeDefinition targetType, InvokerTypes& invokerType)
   at ModuleWeaver.AddOnPropertyChangedMethod(TypeDefinition targetType)
   at ModuleWeaver.FindMethodsForNodes()
   at ModuleWeaver.Execute()
   at InnerWeaver.ExecuteWeavers() in C:\projects\fody\FodyIsolated\InnerWeaver.cs:line 182
Source:
PropertyChanged.Fody
TargetSite:
Mono.Cecil.MethodDefinition InjectMethod(Mono.Cecil.TypeDefinition, InvokerTypes ByRef)

当我将BaseViewModel移到与ConfigurationViewModel相同的项目中时,一切都很好。

这是标准行为吗?这是个bug吗?我做错了什么吗?如何在单独的项目中使用具有BaseViewModel的Fody.PropertyChanged?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-28 07:14:31

当基础视图模型位于同一项目中时,可以将"OnPropertyChanged“方法注入到该类中。当从另一个项目引用基本视图模型时,该项目必须有一个与约定匹配的"OnPropertyChanged“,或者使用EventInvokerNames https://github.com/Fody/PropertyChanged/wiki/EventInvokerSelectionInjection自定义方法名称

总之,尝试将其添加到您的基本视图模型中

代码语言:javascript
复制
public virtual void OnPropertyChanged(string propertyName)
{
    var propertyChanged = PropertyChanged;
    if (propertyChanged != null)
    {
        propertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55379452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档