草庐IT

Getter-Setter

全部标签

c# property setter body 没有声明类级属性变量

我是否需要声明一个类级变量来保存一个属性,或者我可以只在getter/setter中引用self.{propertyname}?换句话说,我可以这样做吗?(我没有在任何地方定义mongoFormId):publicstringmongoFormId{get{returnthis.mongoFormId;}set{this.mongoFormId=value;revalidateTransformation();}} 最佳答案 您可以使用自动访问器或实现您自己的访问器。如果您使用自动访问器,C#编译器将为您生成一个支持字段,但如果您实

c# - 在 setter 中确定调用者——或静默设置属性

给定标准View模型实现,当属性更改时,是否有任何方法可以确定更改的发起者?换句话说,在下面的View模型中,我希望“PropertyChanged”事件的“sender”参数是调用Prop1setter的实际对象:publicclassViewModel:INotifyPropertyChanged{publicdoubleProp1{get{return_prop1;}set{if(_prop1==value)return;_prop1=value;//here,canIdeterminethesender?RaisePropertyChanged(propertyName:"Pr

c# - 为什么这个属性 Getter 是虚的?

某些C#代码存在一个奇怪的问题-属性的Getter方法在未明确标记时显示为虚拟。该类的DbKey属性出现问题(完整代码):publicclassProcessingContextKey:BusinessEntityKey,IProcessingContextKey{publicProcessingContextKey(){//Nothing}publicProcessingContextKey(intdbKey){this.mDbKey=dbKey;}publicintDbKey{get{returnthis.mDbKey;}set{this.mDbKey=value;}}privat

c# - 从抽象类引用继承的 EntitySet 的 dapper PropInfo Setter 为 null

我正在尝试用一些简洁的查询替换令人讨厌的LINQ2SQL命中以提高性能。这样做时,我必须将一堆不同的对象编织在一起,以创建保存ASN信息所需的所有信息所需的大对象。我目前遇到的问题是抽象类Orders,该类由两个单独的类AutionOrder和MerchantOrder使用鉴别器属性实现。由于我无法使用dapper创建抽象类对象,因此我改用其中一个公共(public)类。但是,当它构建对象时,它在GetSettableProps内部失败,它找到了正确的DeclaringType但是GetProperty方法在它返回null时正在寻找internal或EntitySet的属性。我尝试使用

c# - 仅在构造函数中使用私有(private) setter 是否会使对象线程安全?

我知道我可以像这样创建一个不可变的(即线程安全的)对象:classCantChangeThis{privatereadonlyintvalue;publicCantChangeThis(intvalue){this.value=value;}publicintValue{get{returnthis.value;}}}但是,我通常会“作弊”并这样做:classCantChangeThis{publicCantChangeThis(intvalue){this.Value=value;}publicintValue{get;privateset;}}然后我想知道,“为什么这行得通?”它真

c# - 为什么 VB.NET 属性的 setter 需要类型化参数,为什么是 ByVal?

在C#中,属性的settervalue关键字将自动与属性的类型相同。例如,在C#中,value的类型是stringprivatestringstr=string.Empty;publicstringMyText{get{returnstr;}set{str=value;}}如果我们将此代码段转换为VB.Net,我们会得到PrivatestrAsString=String.EmptyPublicPropertyMyText()AsStringGetReturnstrEndGetSet(ByValvalueAsString)str=valueEndSetEndProperty问题为什么se

c# - 使用 Setter 更新样式触发器中的自定义附加属性

我正在尝试附加属性和样式触发器,希望了解更多相关信息。我写了一个非常简单的带有附加属性的WPFWindows应用程序:publicstaticreadonlyDependencyPropertySomethingProperty=DependencyProperty.RegisterAttached("Something",typeof(int),typeof(Window1),newUIPropertyMetadata(0));publicintGetSomethingProperty(DependencyObjectd){return(int)d.GetValue(Somethin

c# - 属性 getter 和具有一个参数的方法之间怎么会存在歧义呢?

我不敢相信我以前从未遇到过这种情况,但为什么我会收到此代码的编译器错误?publicclassMain{publicMain(){varambiguous=newFooBar(1);varisConfused=ambiguous.IsValid;//thiscallisambiguous}}publicclassFooBar{publicintDefaultId{get;set;}publicFooBar(intdefaultId){DefaultId=defaultId;}publicboolIsValid{get{returnDefaultId==0;}}publicboolIsV

c# - 不能在 Style Setter 上设置 TargetName 属性,那么它是如何设置的呢?

过去一周我一直在探索WPF,因此它对我来说仍然很陌生。我正在做的事情之一是简单的动画。在这种情况下,一个弹跳的笑脸。我的攻击计划是:做个笑脸。我已经做到了。在一个简单的物体上制作弹跳动画。我已经做到了。对该动画进行抽象,以便它可以用在多个地方(笑脸的元素)。我被困在这里。将抽象的动画风格应用于笑脸的所有元素。在第2步之后,我得到了以下有效的XAML:在为步骤#3更改上面的工作XAML时,我引入了一个我不太理解的错误。这是不起作用的更改后的XAML:错误“无法在StyleSetter上设置TargetName属性。第20行第79行。”如果不能在style中设置怎么设置呢?

c# - 属性 setter 的 Visual Studio DebuggerStepThrough

我不想禁用VisualStudio对所有异常的正常处理。我正在寻找一种方法来忽略由特定属性的setter引发的异常。我知道[DebuggerNonUserCode]和[DebuggerStepThrough],但它们似乎不适用于属性,或者更具体地说是setter。这可能吗? 最佳答案 我相信您遇到的问题是您试图将特性应用于属性而不是单个访问器。访问器是实际的方法和属性需要去的地方。例如intProperty{[DebuggerNonUserCode]get{...}[DebuggerNonUserCode]set{...}}