当前位置: 首页 > 编程语言 > C#

在C#中引用属性本身,反射?普遍的?类型?分享

时间:2023-04-10 22:37:28 C#

在C#中引用属性本身。反射?普遍的?类型?如果这个问题没有很好地表述,请多多包涵。不知道是问题的一部分。在WPF中的PropertyChangedEventArgs中可以找到我试图完成的示例。如果您想在WPF中标记属性已更改,您可以这样做:PropertyChanged(this,newPropertyChangedEventArgs("propertyName"));您将一个字符串传递给PropertyChangedEventArgs,它指的是已更改的属性名称。正如您所想象的那样,我不想在我的属性名称代码中使用硬编码字符串。当然,重构重命名忽略了这一点,使其不仅在美学上没有吸引力,而且容易出错。无论如何,我更愿意提及财产本身。PropertyChanged(这个,新的PropertyChangedEventArgs(?SomeClass.PropertyName?));看起来我应该能够用一个简短的方法来包装它,让我说出类似上面的内容。privatevoidMyPropertyChanged(??){PropertyChanged(this,newPropertyChangedEventArgs(??.ToString()??));}...所以我可以这样说:MyPropertyChanged(Person.Name);//我对属性*本身*感兴趣的地方到目前为止,我是一片空白。不幸的是,没有直接的方法可以做到这一点;但是,您可以通过Expression在.NET3.5中执行此操作。请参阅此处以了解更多信息。复制示例:PropertyInfoprop=PropertyHelper.GetProperty(x=>x.Bar);(将其更改为返回名称而不是PropertyInfo非常简单)。同样,编写一个变体就像:OnPropertyChanged(x=>x.Name);使用:OnPropertyChanged(Expression>property){...}这是一个经常请求的功能,通常称为infoof("infoof"),它将返回与成员关联的反射对象,例如PropertyInfopi=infoof(Person.Name);可悲的是,动态关键字占用了C#编译器团队的时间!我非常有信心没有办法避免指定字符串——据我所知,C#或.NET中没有内置函数来传递对属性的引用,并且将字符串传递给ReflectionAPI是遥不可及的最简单的方法。但是,在标准.NET之外,您可能会在PostSharp(面向方面??的.NET编程)中找到您的解决方案,它允许您添加代码以在各种属性发生变化时自动引发事件,如您在问题中所示。以上就是C#学习教程:在C#中引用属性本身。反射?普遍的?类型?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: