新版本的.Net框架和C#提供了一个新的访问修饰符:private protected
.为了访问这样的成员,该类必须两者都有
(相比之下protected internal
,满足其中一个条件就足够了)
出于测试目的,InternalsVisibleTo
当我想从我的测试类(在不同的程序集中)访问类的非公共成员时,该属性非常方便.
如何private protected
与InternalsVisibleTo
属性交互?我可以从驻留在原始类派生的"朋友"程序集中的类中访问此类成员吗?
(我无法在我的机器上尝试,因为Visual Studio和C#的版本太旧了).
以前,我们的软件必须同时为 32 位和 64 位 Windows 创建。现在,产品管理层决定我们不再需要支持 32 位 Windows(这对于第三方 SDK 和驱动程序来说非常好)。
在我们几乎所有的 200 个项目中,DEBUG 和 RELEASE 配置只有“任何 CPU”的“平台目标”(只有第三方组件的一些包装器是专门的)。当然,该软件将在具有此类设置的 64 位系统上运行。但是只编译 64 位可以允许更多的编译器优化(或者我错了?),所以我更喜欢创建 64 位可执行文件。
如如何为 MSBuild 指定平台?, 不可能简单地向 msbuild 命令行添加参数,而是必须更改每个项目...
最简单的方法是什么?或者我不需要关心,因为这样做没有好处?
注意:我们使用 C# 和 Visual Studio Professional 2015 版本 14.0.25425.01 更新 3。
在小型Wpf应用程序中,使用绑定到DateTime属性的DatePicker.当用户的区域和语言设置以及数字和日期格式为德语时,日期将以德语显示,日历将显示德语月份名称.现在我想用美式英语.在MainWindow的c'tor中,我在InitializeComponent()之前添加了(在InitializeComponent()之后执行此操作时的情况相同):
string uiLanguage = ConfigurationManager.AppSettings["UILanguage"]; //"en-US"
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(uiLanguage);
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(uiLanguage)));
Run Code Online (Sandbox Code Playgroud)
虽然它适用于文本框,但它对DatePicker没有影响.然后我很傻,创建了一个新用户"约翰英语",以"约翰英语"登录,将他的显示语言设置为英语,日期和数字格式设置为美国英语.现在,DatePicker始终以美国 - 英语格式显示日期,日历显示英文月份名称,即使我将程序的语言设置为德语.怎么解决这个问题?可以解决吗?
在使用 NUnit 为我们的 .Net (C#) 库编写一些测试时,我遇到了以下问题:我有一个具有 Flags 属性的枚举,例如
[Flags]
public enum Powers : int
{
Undefined = 0,
Zero = 1,
One = 2,
Two = 4,
}
Run Code Online (Sandbox Code Playgroud)
现在我想编写一个 NUnit 测试来检查
Powers aValue = Powers.One | Powers.Two
Run Code Online (Sandbox Code Playgroud)
包含 Powers.Two。目前,我使用
Assert.That((aValue & Powers.Two) == Powers.Two), "something went wrong")
Run Code Online (Sandbox Code Playgroud)
但是没有更优雅的方法来做到这一点吗?谢谢你的提示。