现在我正在开发 INotifyPropertyChanged 源生成器(用于研究生成器)并偶然发现了奇怪的错误(?)。当属性用于nameof
引用生成的属性时,对应的属性AttributeData.ConstructorArguments
包含空字符串而不是属性名称。
[AutoNotify]
partial class Sample
{
string _someProp;
[NotifyDependsOn(nameof(SomeProp), nameof(_someProp))]
public string Dependent => _str;
public string Foo() => SomeProp; // added by generator
}
SomeProp
是生成的属性,目前没有添加到源中。如果成员是用户定义的,则一切正常。此代码编译。
- 它是编译器中的错误还是设计使然?
- 解决此问题的最佳方法是什么?从语义模型到语法还是做其他事情?