我正在编写一个包含多个公共类和方法的库,以及库本身使用的几个私有或内部类和方法.
在公共方法中,我有一个空检查和抛出这样的:
public int DoSomething(int number)
{
if (number == null)
{
throw new ArgumentNullException(nameof(number));
}
}
Run Code Online (Sandbox Code Playgroud)
但是这让我思考,我应该在什么级别添加参数null检查方法?我是否也开始将它们添加到私有方法?我应该只为公共方法做吗?
我已经通过NuGet安装了Stylecop.我想禁用一些规则,我知道这可以通过我读过的配置文件来完成.但是,我无法在任何地方找到该文件,似乎很少有文档描述创建文件的位置.
我该如何制作文件?
编辑:由于这个问题似乎在几年后仍然受到关注,我建议现在使用基于Roslyn Analyzer的StyleCop.
这有一些优点:
.ruleset为您创建文件,并且由于使用Roslyn Analyzers,您将获得IDE支持启用/禁用规则.我有一个对象列表,我试图通过首先检查对象中的属性来删除列表中的特定对象.
最初我使用了a foreach然后意识到你在修改集合时不能使用它,所以我决定使用普通for但是我不知道如何编写能够完成我最初编写的代码.
我如何编写代码来完成我原来的工作?
谢谢
这是我的代码:
public void DeleteChunk(int ChunkID)
{
//foreach (Chunk i in ChunkList)
//{
// if (i.UniqueID == ChunkID)
// {
// ChunkList.Remove(i);
// }
//}
//This won't work because here i is just an integer so i.UniqueID won't exist.
for (int i = 0; i < ChunkList.Capacity; i++)
{
if (i.UniqueID == ChunkID)
{
ChunkList.Remove(i);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我以前问了一个关于Visual Studio 2013的类似问题,但现在我遇到了与Visual Studio 2015相同的问题,但它似乎工作方式不同,这使得之前的答案不适用于这个问题.这是我之前的问题:Visual Studio 2013 - 如何在解决方案中调试项目
我正在尝试添加项目引用.我有一个库,我正在一个单独的解决方案/项目和我想用来测试和调试库的控制台应用程序.
我尝试过:添加参考>项目>解决方案>浏览
但是打开文件对话框在过滤器列表中不包含.sln文件,如果我强制它通过键入*.sln显示它们,然后选择我得到的解决方案:
"请确保该文件是可访问的,并且它是一个有效的程序集或COM组件."
我究竟做错了什么?如何正确添加解决方案/项目参考?
我得到StackoverflowException使用依赖注入时,在我的实现装饰图案的.我认为这是因为我对DI/IoC的理解"遗漏"了一些东西.
例如,我目前有CustomerService和CustomerServiceLoggingDecorator.这两个类都实现了ICustomerService,并且所有装饰器类都使用了一个注入ICustomerService但添加了一些简单的NLog日志记录,这样我就可以在不影响代码的情况下使用日志记录,CustomerService同时也不会违反单一责任原则.
然而,这里的问题是因为CustomerServiceLoggingDecorator实现ICustomerService,并且它还需要ICustomerService注入其中的实现才能工作,Unity将继续尝试将其解析回自身,这会导致无限循环,直到它溢出堆栈.
这些是我的服务:
public interface ICustomerService
{
IEnumerable<Customer> GetAllCustomers();
}
public class CustomerService : ICustomerService
{
private readonly IGenericRepository<Customer> _customerRepository;
public CustomerService(IGenericRepository<Customer> customerRepository)
{
if (customerRepository == null)
{
throw new ArgumentNullException(nameof(customerRepository));
}
_customerRepository = customerRepository;
}
public IEnumerable<Customer> GetAllCustomers()
{
return _customerRepository.SelectAll();
}
}
public class CustomerServiceLoggingDecorator : ICustomerService
{
private readonly ICustomerService _customerService;
private readonly ILogger _log = LogManager.GetCurrentClassLogger(); …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc dependency-injection inversion-of-control unity-container
我需要使用printf()来打印uint16_t.这个SO答案(如何打印uint32_t和uint16_t变量值?)说我需要使用inttypes.h.
但是,我正在使用嵌入式系统,并且inttypes.h不可用.当uint16_t的格式说明符不可用时,如何打印uint16_t?
我有一个使用Yeppp的应用程序!SIMD库.该应用程序是用C#编写的.它在Windows x86-32和x86-64上运行完美.但是,当我在带有Mono的Raspberry Pi上运行应用程序时,我得到以下异常(不确定它是ARM问题,Mono问题还是其他问题).我试过以root身份运行只是为了检查,也是同样的异常.我注意到堆栈跟踪的"UnixLibraryLoader"部分,所以我确保Yeppp DLL(Yeppp.CLR.Bundle.dll)与可执行文件位于同一目录中.这是我的代码,编译方式或库的问题吗?
Stacktrace:
at <unknown> <0xffffffff>
at (wrapper managed-to-native) Yeppp.UnixLibraryLoader.dlopen (string,int) <0xffffffff>
at Yeppp.UnixLibraryLoader.Yeppp.INativeLibraryLoader.LoadLibrary (string) <0x0002f>
at Yeppp.NativeLibrary..ctor (string,Yeppp.INativeLibraryLoader) <0x0006b>
at Yeppp.Loader.LoadNativeLibrary () <0x000db>
at Yeppp.Library.Init () <0x00027>
at <Module>..cctor () <0x0000b>
at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff>
at <unknown> <0xffffffff>
at SimdSpeedTest.Program.DisplayCpuFeatures () <0x00033>
at SimdSpeedTest.Program.Main (string[]) <0x000c7>
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <0xffffffff>
Native stacktrace:
Debug info from gdb:
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
[New Thread 0xb5b7b430 (LWP 2272)]
0xb6eabaac in …Run Code Online (Sandbox Code Playgroud) 当引用类中的值(来自同一个类中)时,是否应该使用可以从其他类访问的字段或属性?
例如,我应该在哪个方面引用我班级中的变量,为什么?
public static class Debug
{
private static int _NumberOfEvents = 1;
public static int NumberOfEvents
{
get
{
return _NumberOfEvents;
}
set
{
_NumberOfEvents = value;
}
}
public static void LogEvent(string Event)
{
//This way?
Console.WriteLine("Event {0}: " + Event, _NumberOfEvents);
_NumberOfEvents++;
//Or this way?
Console.WriteLine("Event {0}: " + Event, NumberOfEvents);
NumberOfEvents++;
}
Run Code Online (Sandbox Code Playgroud)
}
谢谢
public class HourlyForecastData
{
public DateTime DateTime { get; private set; }
public decimal TemperatureCelcius { get; private set; }
public decimal DewPoint { get; private set; }
public string Condition { get; private set; }
public int ConditionCode { get; private set; }
public int WindSpeed { get; private set; }
public string WindDirection { get; private set; }
public decimal WindDegrees { get; private set; }
public int UltravioletIndex { get; private set; }
public decimal Humidity { …Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码生成此代码:
<p>@Html.ActionLink("Read", "Index", "News", null, new { @class = "btn btn-default" })</p>
Run Code Online (Sandbox Code Playgroud)

但我想创建一个看起来像这样的按钮(使用HTML字符»):

但是,当我执行以下操作时:
<p>@Html.ActionLink("Read »", "Index", "News", null, new { @class = "btn btn-default" })</p>
Run Code Online (Sandbox Code Playgroud)
我明白了:

我该如何解决?