草庐IT

getter-setter

全部标签

C#6 : nameof() current property in getter/setter

有没有办法在getter/setter中获取当前属性的名称?像这样:publicstringMyProperty{get{returnbase.Get(nameof(ThisProperty));}set{base.Set(nameof(ThisProperty),value);}}nameof(ThisProperty)应该解析为“MyProperty”。 最佳答案 nameof无法做到这一点,但有更好的方法(自C#5起可用)。您可以使propertyName参数可选,并将CallerMemberName属性应用于它:protec

c# - 使用 getter 和 setter 声明私有(private)属性有什么好处吗?

我正在审查另一个开发人员的代码,他为类级别变量编写了很多类似于以下内容的代码://////howoftentocheckformessages///privateintCheckForMessagesMilliSeconds{get;set;}//////applicationpath///privatestringAppPath{get;set;}由于变量是私有(private)的,以这种方式编码不会增加不必要的开销吗?我不是在考虑私有(private)变量需要这种编码模式的情况吗? 最佳答案 这就像说私有(private)方法没

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