在某些情况下,例如MVVMView模型,我有时需要有私有(private)setter,因为View模型公开了一个只能在内部修改的状态。那么在接口(interface)上需要私有(private)setter是错误的吗?(我的意思不是特别是在描述的场景中)如果不是,为什么C#编译器不允许它?谢谢。 最佳答案 根据定义,接口(interface)是供其他代码使用的契约,而不是供私有(private)成员使用的契约。但是,您可以在接口(interface)中指定只读属性并在具体类中实现私有(private)setter:publicin
我们正在创建一个对象层次结构,其中每个项目都有一个其他项目的集合,每个项目还有一个Parent指向其父项的属性。很标准的东西。我们还有一个ItemsCollection继承自Collection的类它本身有一个Owner指向集合所属项目的属性。同样,那里没有什么有趣的。当一个项目被添加到ItemsCollection类,我们希望它自动设置Item的父项(使用集合的Owner属性),并且当项被删除时,我们希望清除父项。这是事情。我们只想要Parentsetter可用于ItemsCollection,没有其他的。这样我们不仅可以知道一个项目的父项是谁,而且我们还可以通过检查Parent中的
如何在此设置中教我的Jenkisfile通过基本身份验证登录?我正在为我的Jenkins构建使用自定义docker镜像。如文档here中所述我这样定义了一个docker代理:pipeline{agent{docker{image'registry.az1:5043/maven-proto'registryUrl'https://registry.az1'args'-v/var/jenkins_home/.m2:/root/.m2'}}options{timeout(time:1,unit:'HOURS')buildDiscarder(logRotator(numToKeepStr:'1
如何在此设置中教我的Jenkisfile通过基本身份验证登录?我正在为我的Jenkins构建使用自定义docker镜像。如文档here中所述我这样定义了一个docker代理:pipeline{agent{docker{image'registry.az1:5043/maven-proto'registryUrl'https://registry.az1'args'-v/var/jenkins_home/.m2:/root/.m2'}}options{timeout(time:1,unit:'HOURS')buildDiscarder(logRotator(numToKeepStr:'1
我不知道这个问题是否足够描述,但是为什么以及如何存在这种行为?:publicclassLayer{publicstringName{get;set;}privateIEnumerablechildren;publicIEnumerableChildren{get{returnthis.children.Where(c=>c.Name!=null).Select(c=>c);}set{this.children=value;}}publicLayer(){this.children=newList();//FineLayerlayer=newLayer();layer.children=
看到了一些发生这种情况的代码示例:publicclassFoo{string[]m_workID;publicstring[]WorkID{get{returnm_workID;}privateset{m_workID=value;}}}这有什么意义?由于不需要使用m_workID。 最佳答案 一般来说,重点是将实现(字段)与API(属性)分开。稍后,如果您愿意,您可以在不破坏源代码或二进制兼容性的情况下将逻辑、日志记录等放入属性中——但更重要的是,您是在说您的类型愿意做什么,而不是它将如何做我有anarticle提供使用属性而不是
我编写了一个自定义序列化程序,它通过反射设置对象属性来工作。可序列化类使用可序列化属性进行标记,所有可序列化属性也进行标记。例如,下面的类是可序列化的:[Serializable]publicclassFoo{[SerializableProperty]publicstringSomethingSerializable{get;set;}publicstringSometthingNotSerializable{get;set;}}当要求序列化程序反序列化SomethingSerializable时,它获取属性的set方法并使用它通过执行如下操作来设置它:PropertyInfopro
C#6.0引入了定义get-only属性的功能:publicICommandAddCommand{get;}现在,当像下面这样定义另一个属性时,ReSharper建议Auto-propertycanbemadeget-only:privateListScreenshots{get;set;}此外,ReSharper在定义私有(private)getter时什么也没说:publicICommandAddCommand{get;privateset;}公共(public)只读属性(例如第一个AddCommand)、私有(private)只读属性(例如Screenshots属性)和公共(pu
我有这门课:classC{privateStringmsg;publicvoidF(Cobj,Stringarg){obj.msg=arg;//thisisstrange,themsgshouldn'tbeaccessiblehere.}publicvoidOutput(){Console.WriteLine(msg);}}测试代码为:Cobj1=newC();Cobj2=newC();obj1.F(obj2,"fromobj1");obj2.Output();输出是:fromobj1因此,obj2的私有(private)成员是从另一个对象obj1访问的。我觉得这有点奇怪。添加这是Ha
我想知道什么是C#最佳实践,具有公共(public)getter的私有(private)/protected成员,或具有私有(private)/protectedsetter的公共(public)getter?publicintPublicGetPrivateSetter{get;privateset;}privateint_privateMember;publicintPublicGetPrivateMember{get{return_privateMember;}}我觉得在您的代码中使用私有(private)成员更加明确,因为它是私有(private)setter(使用命名约定)。