草庐IT

public_private

全部标签

c# - 如何获取基类的公共(public)静态方法?

我的基类有一个公共(public)静态方法,但是当我调用typeof(TDerived).GetMethods(BindingFlags.Public|BindingFlags.Static)时,我的方法没有返回。(TDerived当然以某种方式继承self的基类)。我在此查询的位置没有对我的基类的引用。我做错了什么? 最佳答案 使用BindingFlags.FlattenHierarchy标志:typeof(TDerived).GetMethods(BindingFlags.Public|BindingFlags.Static|B

c# - 单元测试私有(private)代码

这个问题在这里已经有了答案:UnittestingprivatemethodsinC#(16个答案)关闭6年前。我目前正在使用C#进行开发-以下是一些背景信息:我们用我们的客户端应用程序实现MVP,并且我们有一个圈规则,该规则规定任何方法的圈复杂度都不应大于5。这导致了很多小的私有(private)方法,这些方法通常只负责一件事。我的问题是关于对类进行单元测试的:通过公共(public)方法测试私有(private)实现没问题......我在实现这个方面没有问题。但是……下面的情况呢:Example1.Handletheresultofanasyncdataretrivalreques

c# - 在静态方法中访问参数的私有(private)成员?

这段代码如何编译?operatorint中的以下代码可以访问MyValue类的私有(private)变量?为什么?classProgram{staticvoidMain(string[]args){Myvaluemy=newMyvalue(100);Console.WriteLine(my+100);Console.Read();}}publicclassMyvalue{privateint_myvalue;publicMyvalue(intvalue){_myvalue=value;}publicstaticimplicitoperatorint(Myvaluev){returnv.

c# - Autofac - 自动注册错误 : No constructors can be found with 'Public binding flags'

这是我的Global.asax.cspublicvoidRegisterContainersUsingAutofac(){//http://elegantcode.com/2009/01/07/ioc-libraries-compared///http://www.codeproject.com/Articles/25380/Dependency-Injection-with-Autofac//https://code.google.com/p/autofac///http://api.autofac.org/varbuilder=newContainerBuilder();build

c# - 我应该让我的私有(private)类方法静态化吗?

是否有将类中的私有(private)方法设为静态的最佳实践?我有一个有几种方法的类(class)。其中一些可以很容易地变成静态的,因为它们只是处理数据。我应该让它们保持静态还是保持原样?这更多是风格问题吗?是否有性能方面的考虑?编辑:Methodcanbemadestatic,butshouldit? 最佳答案 如果方法不访问任何类型的状态,那么它们应该是静态的。静态方法调用提供了优于实例方法的性能增益,并且静态方法的存在告诉future代码的读者调用此方法不会对该类型的当前实例的状态产生副作用。静态方法的性能提升来自于这样一个事实

c# - 如何访问嵌套类的私有(private)成员?

背景:我已经将(父)类E和嵌套类N封闭起来,并在E中包含多个N实例。在封闭的(父)类中,我正在做一些计算,并为嵌套类的每个实例设置值。像这样:n1.field1=...;n1.field2=...;n1.field3=...;n2.field1=...;...这是一个很大的eval方法(在父类中)。我的意图是——因为所有计算都在父类中(它们不能在每个嵌套实例中完成,因为它会使代码更复杂)——使setter仅对父类可用,而getter公开。现在有一个问题:当我将setter设为私有(private)时,父类无法访问它们当我将它们公开时,每个人都可以改变这些值C#没有友元概念我无法在构造函

c# - 抽象类中 'public'构造函数的相关性

抽象类中的“公共(public)”构造函数是否有任何相关性?我想不出任何可能的方法来使用它,在那种情况下它不应该被编译器视为错误(C#,不确定其他语言是否允许这样做)。示例代码:internalabstractclassVehicle{publicVehicle(){}}C#编译器允许编译此代码,但我无法从外部世界调用此构造函数。它只能从派生类中调用。所以它不应该只允许“protected”和“私有(private)”修饰符。请评论。 最佳答案 没有理由为抽象类使用公共(public)构造函数。我认为编译器没有提示的原因很简单,他们

c# - 为什么锁定公共(public)对象是个坏主意

好吧,我用过很多锁,但我以前从未遇到过这种情况。我有两个不同的类,它们包含用于修改同一个MSAccess数据库的代码:publicclassDatabaseNinja{publicvoidUseSQLKatana{//Codetoexecutequeriesagainstdb.TableAwesome}}publicclassDatabasePirate{publicvoidUseSQLCutlass{//Codetoexecutequeriesagainstdb.TableAwesome}}这是一个问题,因为无法并行执行对数据库的事务,并且这些方法(UseSQLKatana和UseS

c# - 我如何模拟私有(private)领域?

我真的是模拟的新手,正在尝试用模拟对象替换私有(private)字段。目前私有(private)字段的实例是在构造函数中创建的。我的代码看起来像...publicclassCache{privateISnapshot_lastest_snapshot;publicISnapshotLatestSnapshot{get{returnthis._lastest_snapshot;}privateset{this._latest_snapshot=value;}}publicCache(){this.LatestSnapshot=newSnapshot();}publicvoidFreeze

c# - 在仅由构造函数调用的私有(private)方法中分配只读变量的值

C#编译器给我以下错误CS0191:无法将只读字段分配给(构造函数或变量初始值设定项中除外)我是否必须将代码(在我的私有(private)函数中)移动到构造函数中?这听起来很尴尬。请注意,私有(private)方法仅供构造函数调用。我希望有某种属性可以用来标记相应的方法。 最佳答案 不管其他帖子怎么说,是实际上有一种(有点不寻常的)方法来做到这一点并在方法中实际赋值:publicclassFoo{privatereadonlystring_field;publicFoo(stringfield){Init(out_field,fie