ShadowCode 1.0.0
dotnet add package ShadowCode --version 1.0.0
NuGet\Install-Package ShadowCode -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ShadowCode" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ShadowCode --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: ShadowCode, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ShadowCode as a Cake Addin #addin nuget:?package=ShadowCode&version=1.0.0 // Install ShadowCode as a Cake Tool #tool nuget:?package=ShadowCode&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
使用
Nuget 包
Install-Package ShadowCode
引入空间名
global using ShadowCode;
完成后需要重启VS
1. 属性变更通知
1.1 基础用法
在类型
或字段
上使用AddNotifyProperty
特性时会实现INotifyPropertyChanged
接口,并且创建SetProperty
和OnPropertyChanged
方法。
查看代码: 依赖项\分析器\
[AddNotifyProperty]
partial class MyClass
{
}
/*---------------- 生成的方法如下 ----------------*/
partial class MyClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
protected virtual bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string? propertyName = null)
{
if (EqualityComparer<T>.Default.Equals(storage, value)) return false;
storage = value;
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
return true;
}
protected virtual void OnPropertyChanged(PropertyChangedEventArgs args) =>PropertyChanged?.Invoke(this, args);
}
如果方法名和现有代码冲突时可以自定义方法名称(仅在类型上有效)
[AddNotifyProperty(SetPropertyMethodName = "SetXX", OnPropertyChangedMethodName = "OnXX")]
internal partial class MyClass
{
}
/*---------------- 生成的方法如下 ----------------*/
partial class MyClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
protected virtual bool SetXX<T>(ref T storage, T value, [CallerMemberName] string? propertyName = null)
{
...
}
protected virtual void OnXX(PropertyChangedEventArgs args) => ...
}
1.2 在类型
上创建属性
[AddNotifyProperty("Id", typeof(long))]
[AddNotifyProperty("Name", typeof(string), XmlSummary = "名字")]
internal partial class MyClass
{
}
/*---------------- 生成的内容如下 ----------------*/
internal partial class MyClass : INotifyPropertyChanged
{
private long _id;
/// <summary>
/// 名字
/// </summary>
private string _name;
public long Id { get => _id; set => SetProperty(ref _id, value);}
/// <summary>
/// 名字
/// </summary>
public string Name { get => _name; set => SetProperty(ref _name, value); }
}
1.3 在字段
上创建属性
internal partial class MyClass
{
[AddNotifyProperty]
private long _id;
//自定义属性名称和xml文档内容
[AddNotifyProperty("X", XmlSummary = "xml文档内容")]
private string _name;
}
/*---------------- 生成的内容如下 ----------------*/
internal partial class MyClass : INotifyPropertyChanged
{
public long Id { get => _id; set => SetProperty(ref _id, value); }
/// <summary>
/// xml文档内容
/// </summary>
public string X { get => _name; set => SetProperty(ref _name, value); }
}
1.4 使用代码片段创建属性
在类型上标记
AddNotifyProperty
特性。
[AddNotifyProperty]
internal partial class MyClass
{
//使用 代码片段(参考项目中的 propchanged.snippet)
public long Id { get => _Id; set => SetProperty(ref _Id, value); }
private long _Id;
}
There are no supported framework assets in this package.
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.CodeAnalysis.CSharp (>= 4.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 220 | 3/13/2022 |