在我们的架构中,我们有一堆像这样的模型
public class UserModel
{
public string FirstName {get;set;}
}
既然我们正在使用MvvmCross作为我们的视图模型,我们需要我们的属性看起来像这样
public class UserViewModel: MvxViewModel
{
private string _firstName;
public string FirstName
{
get { return _firstName; }
set { _firstName = value; RaisePropertyChanged(() => FirstName); }
}
}
现在我已经有了一个R#模板来编写我自己的mvx属性,只需输入propmvx
,但我仍然需要输入类型和名称。
我想知道是否有办法设置自定义转换模板,以便让 alt + 进入上下文菜单以获得第二个选项......像
- [T] o具有支持字段的属性
- 带有支持字段的[M] vx属性
答案 0 :(得分:4)
即使没有创建任何自定义插件或模式,也可以使用ReSharper Annotations。我最近在JetBrains上录制了一个网络研讨会,演示了如何用注释来解决这个问题。你可以看here。
简答:方法
public void RaisePropertyChanged<T>(Expression<Func<T>> property)
MvxNotifyPropertyChange.cs
的需要使用NotifyPropertyChangedInvocatorAttribute
进行注释,然后您只需在属性上按Alt键输入,然后将其更改为具有更改通知的属性。
现在,既然您不能(或者不想)修改MvvmCross的源代码,您可以通过XML在外部应用这些注释。查看位于ReSharper安装目录中的 ExternalAnnotations 目录。它包含一堆用于其他MVVM框架的外部注释。它是一种简单的XMLDoc格式,因此您可以为MvvmCross创建XML并在那里编写适当的方法。之后,将文件保存在目录MvvmCross
下(或者调用程序集),重新加载解决方案,它应该可以正常工作!
有关详情,请观看我的网络研讨会(上面的链接)或JetBrains help
这是一个可以使用该方法的外部注释文件。
<强> Cirrious.MvvmCross.ExternalAnnotations.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<assembly name="Cirrious.MvvmCross">
<member name="M:Cirrious.MvvmCross.ViewModels.MvxNotifyPropertyChanged.RaisePropertyChanged``1(System.Linq.Expressions.Expression{System.Func{``0}})">
<attribute ctor="M:JetBrains.Annotations.NotifyPropertyChangedInvocatorAttribute.#ctor" />
</member>
</assembly>
这就是行动: