我正在使用Visual Studio 2010,我知道这个功能在C++中可用.
我需要调试一些代码,将变量更改为多个值.我想在特定情况下调试代码,当变量获得特定值时.我知道我可以添加if(var == value),但是有没有优雅的方法呢?
另一个问题,我可以在变量一般改变时设置断点吗?
.net debugging breakpoints conditional-breakpoint visual-studio
我不是LINQ解决方案,
我使用简单的谓词来确定是否应该删除密钥,例如,如果字典是构造的Dictionary<int, int>,那么我应该如何删除所有带有负数据的条目
我更喜欢使用相同的字典,而不是创建新字典,我没有性能问题
有没有办法做到这一点,不使用LINQ,而是使用Lambda表达式?
我不想在LINQ中使用解决方案,因为没有人在我的项目中使用它们,不想成为第一个..但是因为我看到LINQ解决方案看起来更好,我将使用它们..
我需要使用特定的接口注册我的Autofac容器,对于这种情况我想解决mock.
我该怎么做?
我试过了:
var AppContainer = ApplicationContainer.GetApplicationContainer();
var cb = new ContainerBuilder();
cb.RegisterType<Mock<IStudyLoader>>().As<IStudyLoader>().SingleInstance();
cb.Update(AppContainer);
Run Code Online (Sandbox Code Playgroud)
我不想改变我的代码来解决别的问题IStudyLoader,但Mock<IStudyLoader>不能替代IStudyLoader; 例如Mock<IStudyLoader>.Object可以替代IStudyLoader,但我不能注册,Mock<IStudyLoader>.Object因为它不是一种类型.
请纠正我; 我觉得我错过了什么.
(我有另一个限制,我不能使用其他容器ApplicationContainer.GetApplicationContainer())
(我认为在测试时手动注入依赖项会更好,但这次我不想更改生产代码.)
我有几个方法看起来像这样:
public void foo()
{
try
{
doSomething();
}
catch(Exception e)
{
Log.Error(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我可以更改代码吗?
[LogException()]
public void foo()
{
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
如何实现此自定义属性?这样做的利弊是什么?
-----编辑1 ------------
我可以自己实现它,我的意思是只写一个类,还是我需要使用postharp或其他解决方案?
我的wordpress博客中有一篇包含多个页面的文章.例如,我在我的博客中有以下链接:
http://example.com/heartbreaking-photos 任何想法如何更改第二页的链接
http://example.com/heartbreaking-photos/2 到http://example.com/heartbreaking-photos/CUSTOM-STRING
CUSTOM-STRING旨在成为页面内的自定义标题
我有一个函数,我想每x秒调用一次,但我希望它是线程安全的.
我在创建计时器时可以设置此行为吗?(我不介意我使用哪个.NET计时器,我只是希望它是线程安全的).
我知道我可以在我的回调函数中实现锁,但我认为如果它在计时器级别会更优雅.
我的回调函数和环境与UI无关.
[编辑1] 我只是不希望我的回调函数中有多个线程.
[编辑2] 我想将锁定保持在计时器级别内,因为计时器负责何时调用我的回调,这里有一种特殊情况,当我不想调用我的回调函数时.所以我觉得什么时候打电话是计时器的责任.
我有两个使用计时器或使用睡眠的替代方案,我需要在这个方法完成后每隔3秒调用一个方法,我写了一个基本的例子来证明我的意思:
public static void Main()
{
new Thread(new ThreadStart(fooUsingSleep)).Start();
callToMethodAfterInterval(new Action<object, ElapsedEventArgs>(fooUsingTimer), 3000);
}
public static void fooUsingSleep()
{
Console.WriteLine("Doing some consuming time work using sleep");
Thread.Sleep(3000);
fooUsingSleep();
}
public static void fooUsingTimer(object dummy, ElapsedEventArgs dummyElapsed)
{
Console.WriteLine("Doing some consuming time work usning timer");
callToMethodAfterInterval(new Action<object, ElapsedEventArgs>(fooUsingTimer), 3000);
}
public static void callToMethodAfterInterval(Action<object,ElapsedEventArgs> inMethod, int inInterval)
{
System.Timers.Timer myTimer = new System.Timers.Timer();
myTimer.Elapsed += new ElapsedEventHandler(inMethod);
myTimer.Interval = inInterval;
myTimer.AutoReset = false;
myTimer.Start();
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是
1)我可以用更优雅的定时器编写代码吗?意味着从fooUsingTimer中删除对callToMethodAfterInterval方法的调用,使计时器为一行或两行,并从fooUsingTimer的声明中删除虚拟变量?
2)我理解睡眠不忙等待(http://www.codeproject.com/KB/threads/ThreadingDotNet.aspx)所以我没有找到在这里使用计时器选项的理由,因为睡眠更简单,什么是更好的使用,计时器版本或睡眠?
3)我知道Timers.timer是线程安全的,它能帮助我实现我想要实现的行为吗?
谢谢.
我知道使用LINQ而不是迭代循环是好的做法,我可以修改此代码以使用LINQ吗?
List<string> priorsLstIDs = ServiceUtil.extractColumnValuesAsStringVals(tqrPriors,Helper.STUDY_ID);
List<DateTime> priorsLstDates = ServiceUtil.extractColumnValuesAsDateTimeVals(tqrPriors, "STUDY_DATE");
List<PriorElemSt> priorsElemLst = new List<PriorElemSt>(priorsLstIDs.Count);
PriorElemSt elem;
for (int i = 0; i < priorsLstIDs.Count; i++)
{
elem = new PriorElemSt(priorsLstIDs[i], priorsLstDates[i]);
priorsElemLst.Add(elem);
}
return filterStudyPriors(priorsElemLst);
Run Code Online (Sandbox Code Playgroud)
谢谢.
更新:filterStudyPriors()方法调用可以成为LINQ的一部分吗?
我有一个项目,使用System.Diagnostics进行日志记录,
它创建了许多新的日志文件,每个文件以GUID开头,
即使最后一个日志文件非常小
我想设置一个控制新日志文件创建的角色
我在哪里可以配置它?
第二个问题:我在哪里可以设置日志写非utc时间?
谢谢
我有一个方法,我想每隔3秒在一个单独的线程中调用一个方法(将提到myFanc)
下面的代码很容易做到,
Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler( myFanc );
myTimer.Interval = 3000;
myTimer.Start();
Run Code Online (Sandbox Code Playgroud)
上面的代码可能导致myFanc被调用,而另一个myFanc调用尚未完成
我的问题是我还希望myFanc在我调用她的agian之前完成,所以基本上我想在myFanc完成后每隔3秒在分离的线程中调用该方法,我该怎么办呢?
我不介意解决方案是否不会使用Timer类,我只是想让这个行为起作用..
int num;
int.TryParse("5",out num, 10);
Run Code Online (Sandbox Code Playgroud)
这将与TryParse相同,但如果解析失败则addtional,out参数将获得defualt值10
我可以实现它吗?
使用扩展方法,我可以实现以下内容:
int num;
num.TryParse("5",out num, 10);
Run Code Online (Sandbox Code Playgroud)
但这看起来与其他TryParse方法不同.
我正在使用实体框架4.1
我有常规对象,我将他的 ID 设置为 123456789 (长值)
然后我调用 SaveChanges()
问题是 SaveChanges() 正在更改内存和数据库中的 ID,它将 ID 指定为 20
如果我重复这个,它会将 id 指定为 21 等等。
什么会导致这种行为?我应该做什么来解决它?
ID声明:public long ID { get; 放; }
以前已经工作过,以前当ID声明为int时可能工作过(将其更改回来检查是否修改过大..)
谢谢
c# ×10
.net ×3
timer ×2
attributes ×1
autofac ×1
breakpoints ×1
debugging ×1
diagnostics ×1
dictionary ×1
lambda ×1
linq ×1
logging ×1
moq ×1
parsing ×1
sleep ×1
try-catch ×1
wordpress ×1