草庐IT

private-constructor

全部标签

c# - 如何在 C# 中设置带有反射的私有(private) lazy<T> 以进行测试?

问题描述我们有一个相当大的系统,过去常常使用私有(private)setter将数据加载到属性中。为了使用测试特定场景,我曾经使用私有(private)setter在这些属性中写入数据。但是,由于系统越来越慢,并且正在加载不必要的东西,我们使用Lazy类将某些东西更改为延迟加载。但是,现在我无法再将数据写入这些属性,因此许多单元测试将不再运行。我们曾经拥有的要测试的对象:publicclassComplexClass{publicDateTimeDate{get;privateset;}publicComplexClass(){//Sampledata,eagerloadingdata

c# - 是否可以在不强制转换的情况下在 C# 中实现 "virtual constructor"模式?

我正在编写一个由C#编写的程序,该程序最终会被编译成一个应用程序。我希望每个生成的类型都提供一个“深度克隆”功能来复制整个数据树。也就是说,我希望有人能够做到:varx=newBase();//BasehaspublicvirtualBaseDeepClone(){...}vary=newDerived();//DerivedoverridesDeepCloneBasea=x.DeepClone();Baseb=y.DeepClone();//Derivedc=x.DeepClone();//ShouldnotcompileDerivedd=y.DeepClone();//Doesno

c# - C# 类中私有(private)、 protected 、公共(public)和内部方法的性能有什么不同吗?

在C#类中,private、protected、public和internal方法的性能有什么不同吗?我对消耗更多处理器时间或RAM感兴趣。 最佳答案 我不知道正常调用有任何性能差异;当通过动态调用或反射访问时,更受限制的访问可能需要更多的工作,因为调用者可能需要更仔细地验证。在正常的JIT编译情况下,访问可以由CLR验证一次,然后视为理所当然。我猜想JIT编译(和IL验证)本身可能会因为更严格的访问而稍微慢一些-但我很难相信这会很重要。这应该绝对不是决定使用哪种辅助功能的一个因素,即使不知何故存在一些我不知道的微小性能差异。如果您

c# - AutoFixture 和私有(private)属性

我可以指导AutoFixture填充所有类的私有(private)属性,并用特定属性(如Ninject.Inject)进行注释?来源似乎只扫描公共(public)属性(property):1.此问题为具有私有(private)setter的特定MyClass提供了解决方案,但不适用于私有(private)属性或所有类:2.我正在使用Moq来模拟服务,最后我想用这些模拟来填充属性。如果我将MyService依赖项公开为public,则以下设置工作正常。一些示例代码:publicclassMyController{[Inject]privateIMyServiceMyService{get

c# - 使用 Control+Plus 的快捷方式创建 MenuItem – 使用反射修改 MenuItem 的私有(private)字段是最好的方法吗?

我正在使用旧版MainMenucontrol(withMenuItems)controlinanapplication,andwouldliketoimplementzoominandzoomoutmenuitems(withControl++和Control+-键盘快捷键)。(请注意,我使用的是MainMenu而不是MenuStrip)。MenuItem确实有一个Shortcut属性,类型Shortcut,但它没有CtrlPlus选项。我决定看看如何Shortcutwasimplementedinthereferencesource,看起来每个枚举值只是几个Keys的组合枚举值(例如

c# - 为什么我可以使用集合初始值设定项和来自另一个类的私有(private)集合访问?

考虑以下代码:publicsealedclassOrder{publicOrder(){Items=newList();}publicListItems{get;privateset;}}publicsealedclassOrderItem{}这里是另一个类中的Order初始化。varorder=newOrder{Items={newOrderItem(),newOrderItem()}};您能解释一下它为什么有效吗?如您所见,Order具有privateset属性,所以我认为不可能设置它的值。 最佳答案 您的语句之所以有效,是因为

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

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

c# - 接口(interface)可以定义 c#-constructor 的签名吗

我有一个.net-app,它提供了一种使用插件扩展应用程序的机制。每个插件都必须实现一个插件接口(interface),并且还必须提供一个接收一个参数(资源上下文)的构造函数。在插件类的实例化过程中,我通过反射查看是否存在所需的构造函数,如果存在,我将实例化该类(通过反射)。如果构造函数不存在,我会抛出一个异常,提示无法创建插件,因为所需的构造函数不可用。我的问题是,是否有一种方法可以在插件接口(interface)中声明构造函数的签名,以便实现插件接口(interface)的每个人也必须提供具有所需签名的构造函数。这将简化插件的创建。我不认为存在这种可能性,因为我认为这样的功能不属于

c# - 从 C# 中的派生类调用私有(private)基方法

派生类如何调用基类的方法?另一方面,其他类不应具有访问权限。我的情况:我有一个基类,我在其中编写了一个私有(private)方法来注册一些值。privatevoidregister(stringparam1,intparam2){//...}我这样做是为了允许子类注册不同的东西。问题是,派生类无法访问基类的私有(private)方法或字段。这对我来说很有意义,因为私有(private)意味着私有(private)。我不想公开这个方法,因为其他类应该不能调用这个方法。有人可以提供解决方案或指导我进行更好的设计吗? 最佳答案 当你声明私

c# - 有没有办法使只读(不仅仅是私有(private))自动属性?

自动属性让我替换这段代码:privateMyTypemyProperty;publicMyTypeMyProperty{get{returnmyPropertyField;}}使用此代码:publicMyTypeMyProperty{get;privateset;}在这里和那里进行了一些更改-但有没有办法替换此代码:privatereadonlyMyTypemyProperty;publicMyTypeMyProperty{get{returnmyPropertyField;}}有类似的东西吗? 最佳答案 的确,目前没有办法做到这一