小编sor*_*rke的帖子

不实现IValueConvert.ConvertBack时的最佳实践

只是想知道在实现没有有意义的ConvertBack实现(或者只用作OneWay)的IValueConverter时,人们认为最佳做法是什么?

它应该抛出(在这种情况下是什么异常),返回null或返回一些默认值.

思考?

data-binding wpf

33
推荐指数
4
解决办法
6324
查看次数

ObservableCollection还监视集合中元素的更改

是否有一个具有以下特征的集合(BCL或其他):

如果更改集合则发送事件如果集合中的任何元素发送事件,则发送PropertyChanged事件.排序的ObservableCollection<T>位置T: INotifyPropertyChanged和集合也监视元素的变化.

我可以自己包装一个可观察的集合,并在添加/删除集合中的元素时进行事件订阅/取消订阅,但我只是想知道现有的集合是否已经这样做了?

c# collections

32
推荐指数
2
解决办法
3万
查看次数

依赖注入和日志记录接口

我想知道一些关于日志记录和日志记录框架以及依赖注入的最佳实践.具体来说,如果我正在设计一个需要记录方法的类,我应该如何设置一个接口来记录依赖注入?

依赖注入似乎表明外部依赖应该从外部注入(构造函数或属性设置器),所以我应该在构造函数中使用ILog实例并在类中使用吗?我应该考虑记录一个可选的依赖项并将其置于setter中吗?我是否通过允许更改日志记录界面来推动过多的灵活性,并且我应该对特定的日志记录接口采取硬依赖(例如通过调用工厂方法创建静态ILog变量)?这个工厂方法可以调用容器来获取ILog实现,还是会在初始化的静态变量和初始化的IoC容器之间产生初始化冲突?

我应该这样做:

public class MyService : ISomeService
{
  private static readonly ILogger s_log = 
            LoggingFactory.GetLogger(typeof(MyService))
  ...
}
Run Code Online (Sandbox Code Playgroud)

或许这个:

public class MyService : ISomeService
{
  protected virtual ILogger Logger {get; private set;}
  public MyService(ILogger logger, [other dependencies])
  {
    Logger = logger;
  }
}
Run Code Online (Sandbox Code Playgroud)

甚至这个:

public class MyService : ISomeService
{
  public virtual ILogger Logger {get; set;}
  public MyService()
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

其他模式或方法吗?那里的人在做什么?什么工作,什么时候?

logging dependency-injection

27
推荐指数
1
解决办法
6279
查看次数

ASP.NET MVC 3中ViewBag.Title的替代方案

默认情况下,ASP.NET MVC 3的新项目模板将以下内容添加到默认布局(razor中的母版页):

<title>@ViewBag.Title</title>
Run Code Online (Sandbox Code Playgroud)

然后,视图必须包含以下内容以分配页面标题,例如:

@{
     ViewBag.Title = "Log On";
}
Run Code Online (Sandbox Code Playgroud)

也许这只是我自己的偏好,但我发现使用ViewBag来保持标题有点不对(我想的是太多魔术字符串的味道).所以我的问题是:对于使用ASP.NET MVC 3和razor(使用动态属性包)的人来说,这是推荐的最佳实践吗?或者你选择了更强类型的东西(可能涉及自定义基类?)

razor viewbag asp.net-mvc-3

24
推荐指数
2
解决办法
4万
查看次数

禁止生成c#代码的警告

我为我的VS项目打开了"将警告视为错误",这意味着我因错过的文档而出错(这个特定项目的提醒很好).

但是,部分代码是由自定义工具生成的,该工具不会插入xml文档,因此我正在寻找仅忽略生成代码的缺失xml文档,而不是整个项目.我对生成的实际文件没有任何影响,也无法在文件中插入任何内容(因为它经常被工具重新生成)所以我在生成的文件外面寻找存在的东西(生成的类是部分的,如果有帮助的话)

c# code-generation suppress-warnings visual-studio

20
推荐指数
2
解决办法
7191
查看次数

UI自动化和WPF的经验

我们正在开发一个相当大的基于WPF的应用程序,并希望在我们的测试套件中包含一些自动UI测试(它已包含许多单元测试).

微软的UI自动化框架听起来非常适合在测试设置中以编程方式启动和与应用程序交互.但是,我一直在努力寻找样本和技术经验的可靠参考,MSDN上提供的文章和小样本不足以让我相信它是一个可靠的选择.

那么,是否有人在他们的测试套件中使用UI Automation Framework有真实的经验?有什么警告和陷阱?编写测试脚本时的任何最佳实践,是否可以"记录和重放"为可编写脚本的格式,您应该从应用程序中进行多少测试,如何将其合并到自动构建中?我们是否应该寻找与UI自动化框架不同的另一个方向?

随意在这里发布您的经验或链接到我可能错过的一些好的参考

wpf ui-automation

16
推荐指数
2
解决办法
8292
查看次数

在mongodb聚合框架中执行case语句

我正在评估MongoDB聚合框架如何满足我们的需求,因为我们当前正在SQL Server上运行.我很难执行特定查询:

假设我有以下伪记录(在sql表中建模为列,在mongodb集合中建模为完整文档)

{
   name: 'A',
   timespent: 100,
},
{
   name: 'B',
   timespent: 200,
},
{
   name: 'C',
   timespent: 300,
},
{
   name: 'D',
   timespent: 400,
},
{
   name: 'E',
   timespent: 500,
}
Run Code Online (Sandbox Code Playgroud)

我想将timepent字段分组到范围并计算出现次数,以便我得到例如以下伪记录:

results{
   0-250: 2,
   250-450: 2,
   450-650: 1
}
Run Code Online (Sandbox Code Playgroud)

请注意,这些范围(250,450和650)是动态的,并且可能会被用户随时间改变.在SQL中,我们使用以下内容提取结果:

select range, COUNT(*) as total from (
select case when Timespent <= 250 then '0-250'
when Timespent <= 450 then '200-450'
else '450-600' end as range
from TestTable) as r
group by r.range
Run Code Online (Sandbox Code Playgroud)

再次注意,这个sql是由我们的应用程序动态构建的,以适应任何时候可用的特定范围.

我正在努力在mongodb聚合框架中找到适当的构造来执行此类查询.我可以通过在管道中插入$ match来查询单个范围的结果(即获取单个范围的结果),但我不知道如何在单个管道查询中提取所有范围及其计数.

mongodb aggregation-framework

14
推荐指数
2
解决办法
9825
查看次数

跟踪事务升级到DTC的原因

有没有办法确定为什么System.Transaction TrasactionScope被升级到DTC?我们的一个组件似乎升级了交易,而所有其他组件(看起来似乎相似)都没有升级,我们正在碰撞.

是否提供了有关升级原因的信息以及如何找到和遵守这些信息?SQL事件探查器?日志文件?或者我在这个上运气不好?

更新:我正在运行SQL Server 2005以获取信息

msdtc trace system.transactions escalation

12
推荐指数
2
解决办法
4454
查看次数

Azure上托管的高度可用的Service Fabric WebApi

我们将在Azure上的服务结构集群(实例计数-1)中的所有节点上托管一个无状态Owin WebAPI.WebAPI旨在供公众使用,即使面对内部服务和WebAPI本身的升级,也应高度可用.我们在群集前面安装了Azure负载均衡器(LB),每隔5秒使用TCP探测器探测端口80上的群集,以确定哪些节点可以接收http流量.

我们在升级WebAPI时遇到问题,即LB指向正在升级但尚未通过探测注册为脱机的节点.Service Fabric不会与LB协调升级过程,因此在升级时没有机会(并且Azure LB上没有API)使节点无法轮换.

我们想知道人们如何在Azure上的Service Fabric上实现高可用性的http服务.我希望有人会评论他们的一般方法.

high-availability asp.net-web-api azure-service-fabric

12
推荐指数
1
解决办法
415
查看次数

使用故事板在动画期间更改图像

我正在寻找一种在故事板中更改图像的方法,或者更具体地说,更改Source图像的属性以指向新的图像资源.似乎有一个StringAnimationUsingKeyFrames和一个DiscreteStringKeyFrame但是这不起作用(据我所知),因为Image的Source属性是类型的ImageSource

我目前的故事板看起来像这样

<Storyboard x:Key="TransitionImage">
    <DoubleAnimationUsingKeyFrames
        BeginTime="00:00:00" 
        Storyboard.TargetName="image" 
        Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.7000000" Value="0.2"/>
        <SplineDoubleKeyFrame KeyTime="00:00:01.5000000" Value="1"/>
    </DoubleAnimationUsingKeyFrames>
    <StringAnimationUsingKeyFrames
        BeginTime="00:00:00"
        Storyboard.TargetName="image"
        Storyboard.TargetProperty="(Image.Source)">
        <!-- This does not work -->
        <DiscreteStringKeyFrame KeyTime="00:00:00.7000000" Value="check_24.png"/>
    </StringAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames 
        BeginTime="00:00:00" 
        Storyboard.TargetName="image"
        Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.7000000" Value="0.2"/>
        <SplineDoubleKeyFrame KeyTime="00:00:01.5000000" Value="1"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>
Run Code Online (Sandbox Code Playgroud)

和图像

<Image x:Name="image" 
       Source="delete_24.png"
       Width="32" Height="32"
       Margin="8"
       RenderTransformOrigin="0.5,0.5">
    <Image.RenderTransform>
        <TransformGroup>
            <ScaleTransform/>
            <SkewTransform/>
            <RotateTransform/>
            <TranslateTransform/>
        </TransformGroup>
    </Image.RenderTransform>
</Image>
Run Code Online (Sandbox Code Playgroud)

我可以Source将图像更改为故事板的一部分,还是我运气不好?

wpf xaml image storyboard

11
推荐指数
1
解决办法
1万
查看次数