我有一个多个类使用的C#单例类.是通过线程安全Instance的Toggle()方法访问?如果是,通过什么假设,规则等.如果不是,为什么以及如何解决它?
public class MyClass
{
private static readonly MyClass instance = new MyClass();
public static MyClass Instance
{
get { return instance; }
}
private int value = 0;
public int Toggle()
{
if(value == 0)
{
value = 1;
}
else if(value == 1)
{
value = 0;
}
return value;
}
}
Run Code Online (Sandbox Code Playgroud) 我有一组课程,每一个课程都是做同样工作的不同策略.
namespace BigCorp.SuperApp
{
public class BaseClass { }
public class ClassA : BaseClass { }
public class ClassB : BaseClass { }
}
Run Code Online (Sandbox Code Playgroud)
选择使用哪种策略是可配置的.我想在app.config文件中只配置类名'ClassB'而不是完整的类型名称'BigCorp.SuperApp.ClassB'.
<appConfig>
<SuperAppConfig>
<Handler name="ClassB" />
</SuperAppConfig>
</appConfig>
Run Code Online (Sandbox Code Playgroud)
但是,反射调用失败,因为它们期望完整的类型名称,尤其是
Type t = Type.GetType("ClassB"); // results in t == null
BaseClass c = Activator.CreateInstance(t) as BaseClass; // fails
Run Code Online (Sandbox Code Playgroud)
如何在仅配置类名时才能使其工作?将名称空间连接到完整类型名称的类名?是否有其他反射调用有效?
如果你认为这是无用的,我希望配置包含完整的类型名称,我对这个解决方案持开放态度!只是提供说服我的理由.
(我不会从此程序集/命名空间外部加载类型)
在JSON Web服务中发送错误响应的最佳做法是什么?我已经看到它做了几种方式,并想知道选择中是否有任何商定的标准或最佳实践.
我已经看到它完成了响应包括成功或失败的指示以及要返回的数据或合适的错误消息,例如
[{'success':true, 'data':{...}]
[{'success':false, 'data':{'message':'error'}]
Run Code Online (Sandbox Code Playgroud)
但我也看到了JSON对象只包含数据的示例,该服务使用正常的HTTP错误代码来指示问题(403,404,500等).(这就是Twitter API的用途.)
是否有"正确"的方式来做到这一点,还是只是风格问题?后一种方法是否更"RESTful"?
我正在使用Write-Hostcmdlet来更改提示的颜色,我注意到DarkYellow颜色没有显示为任何类型的黄色,而是显示为灰色!这是对所有颜色的测试
PS> 0..15 | %{ Write-Host "Hello, world!" -ForegroundColor $_ }
Run Code Online (Sandbox Code Playgroud)
我通过使用错误的值得到了所有枚举值的列表
PS> Write-Host "Hello, World!" -ForegroundColor foo
Run Code Online (Sandbox Code Playgroud)
黑色,深蓝色,DarkGreen,DarkCyan,DarkRed,DarkMagenta,DarkYellow,灰色,DarkGray,蓝色,绿色,青色,红色,洋红色,黄色,白色
我意识到这个"控制台颜色"列表以某种方式对应于此控制台窗口/快捷方式的设置,对吧?所以,DarkYellow这将是第7个,它肯定看起来很灰.

什么是之间的连接ForegroundColor,System.ConsoleColor而这些控制台快捷键设置,?为什么暗黄色显示为"开箱即用"的灰色?我应该改变吗?这会改变我系统上的每个控制台还是只改变这个快捷方式?
为什么Windows上的控制台如此笨拙?!
我在64位Windows 7 Pro SP1上,我从"开始"菜单启动"Windows PowerShell"快捷方式.
这是问题:
1.在Visual Studio解决方案中创建一个TestProject.
2.打开.testrunconfig文件,在"部署"菜单项下,选中"启用部署"复选框.
3.现在单击"添加目录..."按钮并添加一个文件夹,其中包含一些文件.
4.运行测试项目(使用虚拟测试).
好的,现在去检查TestResults文件夹:您将看到所有文件都被直接复制(到顶层) - 文件夹本身没有被复制(文件在其下面).这会在测试期间弄乱我的路径.任何人都可以告诉如何复制文件夹而不仅仅是下面的文件?
谢谢.
刚刚发现了MSpec,想要尝试一下.但是,我找不到任何详细的文档,除了一些快速教程 - 它们是否存在?
我msbuild.exe从常规的PowerShell控制台通过Rake 运行.这是从诊断级别运行打印的命令
"C:\ Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe""D:/Projects/machine.specifications/Source/Machine.Specifications/Machine.Specifications.csproj31881140"/ maxcpucount/target:Build/verbosity :diagnostic/property:Configuration = Debug/property:TrackFileAccess = false/property:BuildInParallel = false/property:BuildRunner = Rake
而编译失败,因为MSBuild的是捡x64的Platform.
C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(483,9):错误:没有为项目'Machine.Specifications.csproj37103470'设置OutputPath属性.请检查以确保您为此项目指定了Configuration和Platform的有效组合.Configuration ='Debug'Blatform ='X64'.您可能会看到此消息,因为您正在尝试构建没有解决方案文件的项目,并且已指定了此项目不存在的非默认配置或平台.
我没有在命令行(或从脚本)传递它.该csproj有一个默认的配置
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
Run Code Online (Sandbox Code Playgroud)
和两个具体配置
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
Run Code Online (Sandbox Code Playgroud)
所以,我期望AnyCPU选择平台.但是,出于某种原因,某些事情正在挑选或发送x64.我不认为Rake系统在这里是一个问题,我之前看到过对msbuild的原始cmd行调用之前的这种行为(但我没有记录它们).
我在64位Windows 7上,调用msbuild 4.0.我不知道这是否相关.
我正在使用PowerShell配置文件加载 64位Visual Studio工具(C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64)Invoke-BatchFile.这可能是罪魁祸首吗?
为什么msbuild会故意选择x64?32位版本不会为您选择x86.
*1:PowerShell控制台位于%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
*2:我正在运行 …
我正在使用TeamCity Visual Studio运行程序.我想添加一个无法从Visual Studio访问的设置.
/Property:FileAlignment=4096
Run Code Online (Sandbox Code Playgroud)
我直接在构建步骤"命令行参数"中键入了它.构建日志显示错误:
MSBuild命令行参数包含"/ property:"或"/ p:"参数.请改用Build Parameters.
我不明白如何从TeamCity向MSBuild提供此功能并摆脱此警告!
有3种:
我不想要一个环境或系统变量,因为我不希望这个构建依赖于任何外部的东西.我现在要尝试Config,但后来我不确定我是否正确填写它.
构建日志似乎只与其程序具有可导航/可折叠的xml级别,并没有说出构建参数.
模拟对WCF服务的调用时,我收到以下错误:
方法'ICustomerEntities.GetCustomerFromPhoneNumber("01234123123");' 需要返回值或抛出异常.
我用Google搜索并在这里搜索 - 我能找到的是我需要重新排序各种电话等,但这在我的情况下似乎没有意义吗?也许有人可以向我指出它确实存在吗?
我的测试设置看起来像这样
_entities = MockRepository.GenerateStrictMock<ICustomerEntities>();
Run Code Online (Sandbox Code Playgroud)
并且测试方法在第三行上失败,设置 result2
_entities.Expect(ip => ip.GetCustomerFromPhoneNumber("01234123123"));
var test = MockRepository.GenerateMock<ICustomerEntities>(_factory);
var result2 = _entities.GetCustomerFromPhoneNumber("01234123123");
var result = test.GetAllCustomersWithAGivenPhoneNumber("01234123123");
Assert.AreEqual(result,result2);
Run Code Online (Sandbox Code Playgroud)
原始调用试图模拟这个(在一个名为的方法中GetAllCustomersWithAGivenPhoneNumber):
using (var entities = _factory.CreateEntities())
{
var customer = entities.GetCustomerFromPhoneNumber(telephoneNumber);
}
Run Code Online (Sandbox Code Playgroud) .net ×3
c# ×3
unit-testing ×3
msbuild ×2
mstest ×2
64-bit ×1
console ×1
json ×1
mspec ×1
powershell ×1
reflection ×1
rest ×1
rhino-mocks ×1
shortcut ×1
singleton ×1
teamcity ×1
teamcity-7.0 ×1
wcf ×1
web-services ×1
windows ×1