小编Lar*_*rry的帖子

Petapoco的多重映射可以处理多个JOIN吗?

我有一个列表对象,我用它填充使用Petapoco.

类属性和名称正在加工数据库模式.主类是Issue,它与另外两个类相关,名称和属性也与数据库模式匹配:ConditionSeverityLevel.

public class Issue
{
    public int Id { get; set; } // Primary key

    /* Some properties... */
    public DateTime? CreatedOn { get; set; }
    public string CreatedBy { get; set; }
    public DateTime? ModifiedOn { get; set; }
    public string ModifiedBy { get; set; }

    /* ... */

    // Related source and target conditions
    [PetaPoco.Ignore]
    public Condition SourceCondition { get; set; }

    [PetaPoco.Ignore]
    public Condition TargetCondition { get; set; }

    // …
Run Code Online (Sandbox Code Playgroud)

mapping join dapper petapoco

8
推荐指数
1
解决办法
3721
查看次数

如何警告类型转换导致的潜在算术错误?

我正在使用C#编写一个计算模块,我碰到了这个:

double v = 4 / 100;
Run Code Online (Sandbox Code Playgroud)

我知道这是一个错误的初始化,v = 0.0而不是返回v = 0.04

c#规则说我必须确保至少有一个成员是双重的,如下所示:

double v = (double) 4 / 100;
double v = 4.0 / 100;
Run Code Online (Sandbox Code Playgroud)

但是,我有很多涉及整数变量操作的初始化,我觉得懒得逐行浏览我的代码来检测这样的错误.

相反,是否有可能被编译器警告这个?

c# math arithmetic-expressions compiler-warnings implicit-conversion

8
推荐指数
1
解决办法
252
查看次数

如何处理用蹩脚的代码编写的优秀产品?

我被要求改进和维护一个重要的用户社区使用和批准的内部Web应用程序.这包括性能改进和添加功能.

不幸的是,代码臃肿,有时写得很差,难以阅读和更改.这使得更改变得更加难以实现.

尽管如此,该应用程序仍然看起来很好看,很有用,而且用户也喜欢它,并希望进行更改.

这就是为什么我觉得自己被愚弄了.编写糟糕的代码以获得更快的结果和荣耀真的更好吗,然后留下伟大的新项目留下如此多的问题?

我已经阅读了很多关于Coding Horror这个主题的内容,但是我想从这里看到更多正在经历这个悲惨现实的人,以及他们如何应对它.我可能也需要给予一些勇气;)

由于我的主要语言不是英语,请随意用更好的语法重写这个问题.

language-agnostic

7
推荐指数
4
解决办法
595
查看次数

为什么KeyUp和KeyDown事件变慢?

我在WPF窗口上使用KeyUpKeyDown事件.

我在这个窗口的CompositionTarget_Rendering事件中也有很多调用,它创建UIElements并为它们设置动画.这是由下面的引擎类完成的:

int _Fps;
Stopwatch sw = new Stopwatch();

void CompositionTarget_Rendering_Stats(object sender, EventArgs e)
{
    _Fps++;
    var ms = sw.ElapsedMilliseconds;
    sw.Restart();
    engine.Update(ms / 1000f);
    timeFrames.Add(ms);
}
Run Code Online (Sandbox Code Playgroud)

我注意到我拥有的元素越多,get KeyUpKeyDown事件越慢.

当我在主窗口中有大约1000个UI元素时,在我按下或释放一个键后,control_KeyDown和control_KeyUp的代码将在大约半秒后执行.

如果窗口内的动画也是滞后的话,这不会让我感到惊讶,但实际情况并非如此.

  • 帧速率约为55 fps
  • 动画保持流畅
  • CompositionTarget_Rendering事件中的计算持续时间不超过20毫秒.

似乎只有键盘事件轮询遭遇了沉重的条件.

我的问题是:

  • WPF中键盘处理背后的魔力是什么:为什么它在重度条件下变得迟钝而不是渲染过程?
  • 如何处理更好的键盘输入并避免这种情况?

编辑:

我写了一个受安迪评论启发的样本.您可以将其粘贴到新WPF应用程序的主窗口中.它会在键向下或向上时更改窗口的颜色,并在CompositionTarget_Rendering事件中填充尽可能多的文本框.

public partial class MainWindow : Window
{
    WrapPanel root2;

    public MainWindow()
    {
        InitializeComponent();
        root2 = new WrapPanel();
        root2.Margin = new Thickness(10);
        this.Content = root2;
    }

    private void Window_Loaded(object sender, RoutedEventArgs …
Run Code Online (Sandbox Code Playgroud)

wpf keyboard-events

7
推荐指数
1
解决办法
1505
查看次数

(_)=> DoWork(); 下划线如何作为匿名委托参数有效?

关于立即启动计时器的一个很好的答案,我可以看到以下代码:

    timer.Elapsed += timer_Elapsed;
    ThreadPool.QueueUserWorkItem((_) => DoWork());
...

void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
    DoWork();
}

void DoWork() {
    // etc...
}
Run Code Online (Sandbox Code Playgroud)

我自己尝试了,我碰到了这一行,我认为匿名委托构造中有一个错字:

                                What?
                                  |
                                  V
    ThreadPool.QueueUserWorkItem((_) => DoWork());
Run Code Online (Sandbox Code Playgroud)

哪个隐藏规则使得下划线"_"可以作为匿名委托中的参数名称接受?

c# delegates anonymous-methods

7
推荐指数
1
解决办法
1221
查看次数

如何在ASP.NET Core服务器中停止MassTransit总线?

我正在研究MassTransit和ASP.NET Core,依赖注入,并成功实现了一些可行的方法。我计划使用Kestrel Web服务器。

因此,我必须在.NET中以这种方式配置ASP.NET核心项目Startup.cs

public void ConfigureServices(IServiceCollection services) {

    ...

    var bus = Bus.Factory.CreateUsingRabbitMq(sbc => {
        var host = sbc.Host(new Uri(address), h => {
            h.Username("guest");
            h.Password("guest");
        });
    });

    services.AddSingleton<IBus>(bus);
    services.AddScoped<IRequestClient<GetTagRequest, GetTagAnswer>>(x =>
        new MessageRequestClient<GetTagRequest, GetTagAnswer>(x.GetRequiredService<IBus>(), new Uri(address + "/gettagrequest"), timeOut));

    bus.Start(); // <= ok. how is the bus supposed to stop ?

    ...
Run Code Online (Sandbox Code Playgroud)

尽管此方法运行良好,但没有教程提到任何有关bus.Stop()在ASP.NET核心项目中进行设置的内容。我在MassTransit文档中读到,运行中的总线可能会阻止正常退出。

  • 这是Kestrel Web服务器的主要问题吗?我已经阅读了有关流程回收的信息,但恐怕运行中的总线会危害到这一点。
  • 我可以将它bus.Stop()放在ASP.NET Core项目的哪个位置?

c# masstransit kestrel-http-server asp.net-core-mvc-2.0

6
推荐指数
1
解决办法
871
查看次数

调试XSLT文件时VS2008 SP1崩溃

我正在使用VS2008 SP1 - 不知道在我应用SP1之前是否会发生这种情况,因为我从未在昨天之前尝试过.我尝试使用VS2008 SP1调试一个相当简单的XSLT文件,并从VS2008 SP1中获得此崩溃:


Microsoft Visual Studio

遇到意外错误.建议您尽快重启应用程序.

错误:未指定错误

文件:vsee\pkgs\vssprovider\sccprj.cpp

xslt visual-studio-2008 visual-sourcesafe-plugin

5
推荐指数
1
解决办法
2391
查看次数

WPF多边形的基本计算:面积和质心

System.Windows.Shapes.Shape命名空间提供对可在XAML或代码中使用的Polygon对象的访问.

是否有一个Microsoft库在Polygon类似区域或centriod上提供一些非常基本的计算?

我的偏好是不要自己重新实现这些功能或复制数学/几何库.

c# wpf geometry polygon

5
推荐指数
1
解决办法
2985
查看次数

如何关注我刚刚通过互操作打开的Word文档?

我正在编写一个简单的Word Interop应用程序,它在后台打开.doc文件,更改书签内容,然后让用户看到它:

var App = new Microsoft.Office.Interop.Word.Application();

var ParTemplate = (object)Template;
var ParVisible = (object)false;

var Doc = App.Documents.Open(
    FileName: ref ParTemplate, // Template
    ConfirmConversions: ref missing,
    ReadOnly: ref missing,
    ...

Doc.Activate();

Doc.SetBookmarkValue("IssueNumber", TheIssue.IssueNo);
Doc.SetBookmarkValue("Title", TheIssue.Title);
...

App.Visible = true;
App.WindowState = WdWindowState.wdWindowStateNormal;
Run Code Online (Sandbox Code Playgroud)

实际上,Word应用程序出现在任务栏中,用户必须手动切换到它.

使我的应用程序专注于打开的Word文档的最佳方法是什么?

c# ms-word office-interop

5
推荐指数
1
解决办法
6738
查看次数

用布尔值做保险丝

我有很多代码片段必须在初始化期间运行一次.

我必须以这种方式使用布尔标志,因为它在一个事件中

bool _fuse;

void PerformLayout()
{
    Size size;

    if (!_fuse)
    {
        size = _InitialContainerSize;
        _fuse = true;
    }
    else
        size = parent.Size;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

因为它经常发生,我做了一些事情来使这个布尔变量看起来像一个保险丝:

所以我这样做了:

bool _fuse;

void PerformLayout()
{
    Size size;

    if (!Burnt(ref _fuse))
        size = _InitialContainerSize;
    else
        size = parent.Size;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果它初始化为false,则查询结果返回false一次,将切换为true,并且后续调用返回true.

public static bool Burnt(ref bool value)
{
    if (!value)
    {
        value = true;
        return false;
    }
    else
        return true;
}
Run Code Online (Sandbox Code Playgroud)

当然,它有效,但我只是中等满意,我相信有更优雅的解决方案.你的是什么?

c# boolean code-design

5
推荐指数
0
解决办法
137
查看次数