我是PyCharm(和Python)的新手,但是找不到在PyCharm项目中对我所有文件中的单词进行完整搜索的方法.每次我编辑 - >查找它会继续搜索当前搜索我的插入符号所在单词的文件.如何对我输入的单词的所有文件进行完整扫描?
当我选择Find Usages时,它告诉我将我的插入符号放在特定的单词上.
Simple Injector允许您在解析时将参数传递给构造函数吗?我想知道这两个框架是否都可以执行Unity的ResolverOverride或DependencyOverride.
我刚开始一个新项目,我正在使用GitLab和SourceTree.我创建了一个分支(origin\master),但是我错误地将这个分支用于我的开发,所以我将我的前几个更改推送到了这个分支.现在我了解到这个分支实际上应该有生产版本,并且应该使用origin\develop分支进行开发.
有没有什么办法可以将master分支重命名为origin\develop,并以某种方式使用原始版本的应用程序创建一个新的origin\master分支?
我是项目中唯一的开发人员,因此不会影响任何人.如果可能的话,如果你可以解释如何在SourceTree中这样做,因为我不使用命令行git.我对SourceTree比较熟悉.
我是第一次尝试使用.NET Core,看看Moq如何用于单元测试.开箱即用,创建控制器,其中ApplicationDbContext是构造函数的参数,如下所示:
public class MoviesController : Controller
{
private readonly ApplicationDbContext _context;
public MoviesController(ApplicationDbContext context)
{
_context = context;
}
Run Code Online (Sandbox Code Playgroud)
这是我在测试控制器时开始的单元测试:
[TestClass]
public class MvcMoviesControllerTests
{
[TestMethod]
public async Task MoviesControllerIndex()
{
var mockContext = new Mock<ApplicationDbContext>();
var controller = new MoviesController(mockContext.Object);
// Act
var result = await controller.Index();
// Assert
Assert.IsInstanceOfType(result, typeof(ViewResult));
}
Run Code Online (Sandbox Code Playgroud)
但后来我意识到ApplicationDbContext是一个具体的类,它没有无参数构造函数,所以测试不起作用.它给了我错误:找不到无参数构造函数.
也许这可能是一个更多针对Moq而不是与.NET Core相关的问题,但我也是Moq的新手,所以我不知道如何继续.以下是创建项目时ApplicationDbContext代码的生成方式:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the …
Run Code Online (Sandbox Code Playgroud) 我正在为Windows 10开发通用Windows应用程序,我发现的第一件事是在设置图像样式时不支持Trigger元素(XAML).这是我试图实现的代码:
对不起,我不得不在这里使用图片,我从我的VM获取它.
现在在通用Windows应用程序中如何实现这种类型的触发器?
我们的应用程序有很多对Task.Factory.StartNew(Action动作)的调用.不幸的是,在执行此操作时,未设置文化,此外,没有错误处理.我从一个可以同时执行这两个操作的入门类开始:
public static class TaskBuilder
{
private static Action<System.Exception> _exceptionCallback;
public static Task StartNew(Action action, CultureInfo cultureInfo, Action<System.Exception> exceptionCallback)
{
_exceptionCallback = exceptionCallback;
return Task.Factory.StartNew(() =>
{
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureInfo.Name);
action.Invoke();
}).ContinueWith(t => ManageException(t.Exception), TaskContinuationOptions.OnlyOnFaulted);
}
private static void ManageException(System.Exception e)
{
if (_exceptionCallback != null)
{
_exceptionCallback(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但后来我意识到更好的方法是拦截器.我想拦截对StartNew的调用,以便新线程包含文化和错误处理代码.我的尝试产生了以下代码:
public class TaskInterceptionHandler : ICallHandler
{
public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
Thread.CurrentThread.CurrentUICulture = // How do I get parent cultureInfo?;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureInfo.Name); …
Run Code Online (Sandbox Code Playgroud) 当我在Visual Studio中查看我的特定项目的项目属性时,有一个名为Output Type的字段,其中显示了Windows Application.这会自动告诉我它是WinForms应用程序吗?如果项目是Winforms应用程序,我正试图找到一种方法来立即确定.是的,我可以查看文件并通过查看表单来确定.但我想知道是否有一种更明显的方法可以通过简单地查看项目的属性来确定.
我问的另一个原因是因为当我查看WPF应用程序的项目属性时,输出类型也是Windows应用程序.确定它是WPF应用程序的方法是查找XAML文件.那么有没有更简单的技术来通过查看项目属性来确定它是什么类型的应用程序?
我有以下方法需要用Moq测试.问题是switch语句中调用的每个方法都是私有的,包括最后的PublishMessage.但是这种方法(ProcessMessage)是公开的.我如何测试这个,以便我可以确保根据参数进行调用?请注意,我没有测试私有方法,我只想测试"调用".我想模拟这些私有方法,并检查它们是否使用安装程序调用,但Moq不支持模拟私有方法.
public void ProcessMessage(DispenserMessageDataContract dispenserMessage)
{
var transOptions = new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted };
using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew, transOptions))
{
switch (dispenserMessage.Type)
{
case DispenserMessageType.AckNack:
UpdateAckNackMessageQueue(dispenserMessage);
break;
case DispenserMessageType.FillRequest:
CreateFillRequestMessageQueue(dispenserMessage);
break;
case DispenserMessageType.FillEvent:
UpdateFillEventMessageQueue(dispenserMessage);
break;
case DispenserMessageType.RequestInventory:
CreateRequestInventoryMessageQueue(dispenserMessage);
break;
case DispenserMessageType.ReceiveInventory:
CreateReceiveInventoryMessageQueue(dispenserMessage);
break;
}
scope.Complete();
}
PublishMessage(dispenserMessage);
}
Run Code Online (Sandbox Code Playgroud) 我正在努力提高IoC容器的性能.我们使用的是Unity和SimpleInjector,我们有一个带有这个构造函数的类:
public AuditFacade(
IIocContainer container,
Func<IAuditManager> auditManagerFactory,
Func<ValidatorFactory> validatorCreatorFactory,
IUserContext userContext,
Func<ITenantManager> tenantManagerFactory,
Func<IMonitoringComponent> monitoringComponentFactory)
: base(container, auditManagerFactory, GlobalContext.CurrentTenant,
validatorCreatorFactory, userContext, tenantManagerFactory)
{
_monitoringComponent = new Lazy<IMonitoringComponent>(monitoringComponentFactory);
}
Run Code Online (Sandbox Code Playgroud)
我还有另一个使用此构造函数的类:
public AuditTenantComponent(Func<IAuditTenantRepository> auditTenantRepository)
{
_auditTenantRepository = new Lazy<IAuditTenantRepository>(auditTenantRepository);
}
Run Code Online (Sandbox Code Playgroud)
我看到第二个在大多数时间内在1毫秒内得到解决,而第一个平均需要50-60毫秒.我确定较慢的原因是因为参数,它有更多的参数.但是,如何才能提高速度较慢的性能呢?这是我们Func<T>
用作参数的事实吗?如果它导致缓慢,我可以改变什么?
我在多线程编程中难以理解的一件事是,当一个线程到达一个调用的行时,WaitOne()
我如何知道涉及哪些其他线程?我在哪里或如何找到(或理解)WaitHandle
接收信号的方式?例如,我现在正在查看此代码:
private void RunSync(object state, ElapsedEventArgs elapsedEventArgs)
{
_mutex.WaitOne();
using (var sync = GWSSync.BuildSynchronizer(_log))
{
try
{
sync.Syncronize();
}
catch(Exception ex)
{
_log.Write(string.Format("Error during synchronization : {0}", ex));
}
}
_mutex.ReleaseMutex();
_syncTimer.Interval = TimeBeforeNextSync().TotalMilliseconds;
_syncTimer.Start();
}
Run Code Online (Sandbox Code Playgroud)
文件中有一些这样的方法(即RunThis(),RunThat()).这些方法在Windows服务中运行,并在Timer过去时调用.使用不同的定时器调用这些方法中的每一个并设置如下:
//Synchro
var timeBeforeFirstSync = TimeBeforeNextSync();
_syncTimer = new System.Timers.Timer(timeBeforeFirstSync.TotalMilliseconds);
_syncTimer.AutoReset = false;
_syncTimer.Elapsed += RunSync;
_syncTimer.Start();
Run Code Online (Sandbox Code Playgroud)
我知道当Timer过去时,该RunSync
方法将运行.但当它击中WaitOne()
线时,线程被阻塞.但是谁在等待?哪个"其他"线程会发送信号?
c# ×3
moq ×2
.net ×1
asp.net-core ×1
git ×1
gitlab ×1
interception ×1
pycharm ×1
sourcetree ×1
uwp ×1
uwp-xaml ×1
xaml ×1