草庐IT

getter-only

全部标签

c# - "Read only"C# 中的属性访问器

我有以下类(class):classSampleClass{privateArrayListmMyList;SampleClass(){//InitializemMyList}publicArrayListMyList{get{returnmMyList;}}}我希望用户能够获得mMyList,这就是为什么我通过属性公开“get”,但我不希望他们对对象进行更改(即MyList.Add(newClass());)回到我的类(class)。我想我可以返回对象的副本,但这可能会很慢,我正在寻找一种方法来提供编译时错误,通知用户他们不应该期望能够修改返回的属性(property)的值(valu

c# - 为什么方法缺乏凝聚力(LCOM)包括getters和setters

我正在查看此处显示的LCOM指标,http://www.ndepend.com/Metrics.aspx所以我们说了一些事情,1)Aclassisutterlycohesiveifallitsmethodsuseallitsinstancefields2)Bothstaticandinstancemethodsarecounted,itincludesalsoconstructors,propertiesgetters/setters,eventsadd/removemethods如果我看这样的类,publicclassAssessment{publicintStartMetres{g

c# - 使用仅限 getter 的自动属性显式实现接口(interface)(C# 6 功能)

为显式接口(interface)实现使用自动属性​​wasnotpossibleinC#5,但现在C#6支持getter-onlyauto-properties,现在应该可以了吧?在C#6中创建自动属性成功,但是当尝试在构造函数中为其赋值时,您必须首先将this转换为接口(interface)类型,因为实现是显式的。但这就是VS2015RC和VSCode0.3.0显示可以在评论中看到的错误的地方:usingstaticSystem.Console;namespaceConsoleApp{publicinterfaceIFoo{stringTestFoo{get;}}publicclas

c# - 来自不同接口(interface)的 getter 和 setter

我真的需要这样的东西:interfaceIReadableVar{objectValue{get;}}interfaceIWritableVar{objectValue{set;}}interfaceIReadableWritableVar:IReadableVar,IWritableVar{}但是,当我尝试使用IReadableWritableVar.Value时,我会遇到编译错误,除非我显式转换为基本接口(interface),如下所示:staticvoidMain(){IReadableWritableVarvar=null;vart=var.Value;//为什么我会收到这些错

c# - Visual Studio 项目 : How to include a reference for one configuration only?

环境:VS2008C#项目我需要构建我的应用程序以在2个不同的环境中使用。在其中一个环境中,我需要使用第3方DLL程序集。我可以使用#ifblock隔离使用此DLL的代码。但是我如何有条件地在CS项目文件中包含对DLL的引用?编辑:womp在他的评论中有一个很好的观点。我变成了separatequestion:如果引用的DLL从未被调用,是否会被加载?TIA, 最佳答案 卸载项目并将其作为.XML打开找到引用项标签并添加条件属性。例如:3.5注意最后一个引用现在有一个条件。 关于c#-V

c# - 单元测试错误 : This function can only be invoked from LINQ to Entities

我正在编写一个MVC5互联网应用程序,我的表达式如下:publicExpression>IsExpiresDateTimeLessThanMinimumDaysLeftInFreeTrialSubscription(intminimumDaysLeftInSubscriptionForEmail){returnAccount=>System.Data.Entity.DbFunctions.DiffHours(Account.freeTrialEndDate,DateTime.UtcNow)从数据库中检索数据时,上述表达式正确完成。但是,在编写使用上述表达式的单元测试时,出现以下错误:T

c# - 是否可以仅在属性的 getter 或 setter 上使用 Obsolete 属性

是否可以仅在属性的getter或setter上使用Obsolete属性?我希望能够做这样的事情:publicintId{get{return_id;}[Obsolete("Goingforward,thispropertyisreadonly",true)]set{_id=value;}}但显然不会构建。是否有解决方法可以让我将此属性仅应用于setter? 最佳答案 我认为这是不可能的,因为出于某种原因,它已被明确禁止用于Obsolete属性。根据围绕属性目标定义的规则,Obsolete属性似乎没有任何理由在属性get或set访问器

C#:接口(interface)继承getters/setters

我有一组与特定可变对象紧密结合使用的接口(interface)。对象的许多用户只需要能够从对象中读取值,然后只需要几个属性。为了避免命名空间污染(更容易的智能感知)并理解使用意图,我想要一个小的基本接口(interface),它只以只读方式公开一些“关键”属性。但是,几乎所有实现都将支持完整的接口(interface),包括可修改性。不幸的是,我在用C#表达该概念时遇到了障碍:interfaceIBasicProps{publicintPriority{get;}publicstringName{get;}//...whatever}interfaceIBasicPropsWritea

c# - 如何只查找同时具有 getter 和 setter 的属性?

C#、.NET3.5我正在尝试获取一个对象的所有属性,这些属性同时具有实例的getter和setter。我认为应该工作的代码是PropertyInfo[]infos=source.GetType().GetProperties(BindingFlags.Instance|BindingFlags.Public|BindingFlags.SetProperty|BindingFlags.GetProperty);但是,结果包含一个没有setter的属性。为了让您对我的继承结构有一个简单的了解,可能会对此产生影响(尽管我不知道如何影响):publicinterfaceIModel{stri

c# - 在 C# 中是否可以使用同名的公共(public) getter 和私有(private) setter?

如何为属性创建公共(public)getter和私有(private)setter?以下是正确的吗?publicStringPassword{set{this._password=value;}}privateStringPassword{get{returnthis._password;}} 最佳答案 是的,即使使用自动属性也是可能的。我经常使用:publicintMyProperty{get;privateset;} 关于c#-在C#中是否可以使用同名的公共(public)gette