微软应该已经实现了一些有趣的东西INotifyPropertyChanged,就像在自动属性中一样,只需指定{get; set; notify;}
我认为这样做很有意义.或者有任何并发症吗?
我们自己可以在我们的属性中实现类似'notify'的内容.是否有一个优雅的解决方案,INotifyPropertyChanged在您的班级实施或唯一的方法是通过提高PropertyChanged每个属性中的事件.
如果没有,我们可以写一些东西来自动生成一段代码来引发PropertyChanged 事件吗?
我在XAML开发中广泛使用宏来查看ViewModel属性.我在WCF中更多地使用它们来生成Message和DataContract属性.
令我失望的是,我构建的宏在Visual Studio 2012中无法使用.
我正在谈论的一个例子,对于VM,我会输入这样的东西.
int id;
string name;
Run Code Online (Sandbox Code Playgroud)
选择两行,运行宏并最终结束
private int _id;
private string _name;
public int Id
{
get {return _id;}
set
{
if(_id != value)
{
_id = value;
RaisePropertyChanged("Id");
}
}
public string Name
{
if(_name != value)
{
_name = value;
RaisePropertyChanged("Name");
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找其他解决丢失宏的解决方案的想法.
有没有办法避免这种情况.我有很多绑定到DataGridViews的类,它们只是带有默认getter和setter的简单属性集合.所以这些类非常简单.现在我需要为它们实现INotifyPropertyChanged接口,这将增加很多代码量.是否有任何类可以继承以避免编写所有这些无聊的代码?我认为我可以从某个类继承我的类,并用一些属性装饰属性,它会发挥魔力.那可能吗?
我很清楚面向方面编程,但我更倾向于以面向对象的方式.
有没有人知道一个实用程序来预处理C#源文件而不编译它,就像在GCC中使用-E标志一样?我尝试使用GCC - 它成功地处理了#if指令,但它在任何#region指令上都会窒息......
理想情况下,我希望能够在.cs文件上运行该工具以删除任何#if评估为false的块,并且可选地能够标记是否删除/保留完整的注释#region,#pragma指令等.
为了将其置于上下文中,我希望能够发布一些(更大)项目的一部分源代码,同时删除仅与较大项目相关的部分.例如,有大量代码如下所示:
#if (SUBPROJECT)
namespace SubProject
#else
namespace CompleteProject
#endif
{
public class SomeClass()
{
#if (!SUBPROJECT)
// This might call a method contained in an assembly that potentially
// won't be available to the sub-project, or maybe a method that hooks
// into a C library via P/Invoke...
string result = CallSomeCleverMethod();
#else
// This might call a method that performs a simplified version of the …Run Code Online (Sandbox Code Playgroud) 说我有以下课程:
public MainFormViewModel
{
public String StatusText {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
将我对StatusText的更改反映到绑定到它的任何控件的最简单最简单的方法是什么?
显然我需要使用INotifyPropertyChanged,但有没有一种很酷的方法来做到这一点,不会弄乱我的代码?需要大量文件?等等?
注意:如果这是一个骗局,那么我很抱歉.我搜索并找不到任何东西,但使用T4代码生成听起来不容易(至少设置).