gpt4 book ai didi

.net - 为什么在MVVM Light中没有PropertyChanged的简写

转载 作者:行者123 更新时间:2023-12-03 10:52:04 25 4
gpt4 key购买 nike

每次我们在 setter 中调用PropertyChanged时,MVVM Light中都没有简写形式,类似于flex [Bindable]:

[PropertyChanged]
public bool IsEditable { .... }

为什么我们每次都要编写PropertyChanged(“IsEditable”),它容易出错,因此可以在默认位置编写它。

最佳答案

如果不重写IL插入PropertyChanged调用,则无法完成此操作。 (或者使用非常慢的代理,并在运行时构建继承的类型)

您正在寻找PostSharp

您还可以创建引发事件的代码段:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Property With Change Event</Title>
<Shortcut>propc</Shortcut>
<Description>Code snippet for property that calls OnPropertyChanged and XML description</Description>
<Author>SLaks</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>type</ID>
<ToolTip>Property type</ToolTip>
<Default>string</Default>
</Literal>
<Literal>
<ID>property</ID>
<ToolTip>Property name</ToolTip>
<Default>MyProperty</Default>
</Literal>
<Literal>
<ID>field</ID>
<ToolTip>Backing field name</ToolTip>
<Default>myProperty</Default>
</Literal>
<Literal>
<ID>desc</ID>
<ToolTip>The description of this property</ToolTip>
<Default>...</Default>
</Literal>
</Declarations>
<Code Language="csharp"><![CDATA[$type$ $field$;
///<summary>Gets or sets $desc$.</summary>
public $type$ $property$ {
get { return $field$; }
set { $field$ = value; OnPropertyChanged("$property$"); }
}
$end$]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

关于.net - 为什么在MVVM Light中没有PropertyChanged的简写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4558341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com