小编Ste*_*ard的帖子

IOC设计资源

我已经做了很多搜索,没有太多运气找到一些有凝聚力的东西.我是一个相对较新的开发人员,刚刚开始我的第一个职业发展职位.我知道即使在基础知识领域我也有很多东西可以学习.基于收听PodCasts,阅读博客,论文等; 我已经明白,在设计和构建软件时要牢记关注点,IOC,依赖注入似乎是正确的做法.我将这些概念处于非常高的水平,并希望尽可能多地接近我对此的处理方式.

所以,这就是问题所在.我怎么这样设计东西?我在一个团队中工作,这个团队继承了一个基于网络的产品,这个产品非常紧密地联系在一起,文档记录很差,并且通常不容易维护一些软件.Evryone似乎喜欢删除这对夫妇的想法.他们喜欢开发自动化测试的想法(从我读过的内容来看,使用松散耦合的组件更容易).似乎没有人知道该怎么做.我愿意接受它,但我需要指导.我发现的所有东西似乎总是以非常高的方式谈论这些东西,或相反,只关注整体的一小部分.我想要一本关于一本书,一系列教程,视频或SOMETHING的指导,它们采用了一些现实世界的例子,并向您展示了如何应用这些原则.理想的情况下,

我知道这有点啰嗦,我只是有点沮丧,因为我发现的大部分综合训练材料根本就没有讨论这个话题,有人从一天开始就可以应用好的做法一.

谢谢大家的时间.

史蒂夫

.net c# alt.net dependency-injection inversion-of-control

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

搜索分层列表

我有一个简单的类定义为:

public class IndexEntry
{
   public bool HighScore { get; set; }
   public List<IndexEntry> SubEntries { get; set; }
   //Other properties, etc...
}
Run Code Online (Sandbox Code Playgroud)

我现在需要搜索List以找到其HighScore属性设置为true的一个项目.既然它不是一个平面列表,而是一个层次结构,它可以是一个未知数量级别的深度,因为我正在寻找的项目可能包含在任何一个SubEnties列表中,我不能做一个简单的Lambda像这个:

var foundHighScore = myList.FirstOrDefault(IE => IE.HighScore == true);
Run Code Online (Sandbox Code Playgroud)

这是我的代码.我知道这很难看(至少对我而言似乎这样).它有效,但在一个甚至远程大型列表上的速度很慢,我确信必须有更好的方法.

private IndexEntry GetHighScoreEntry(IEnumerable<IndexEntry> entryList)
{
    IndexEntry result = null;
    IndexEntry recursiveResult = null;
    foreach (IndexEntry currentEntry in entryList)
    {
        if (currentEntry.HighScore)
        {
            result = currentEntry;
            break;  //Don't need to look anymore, we found our highscore.;
        }
        else
        {
            if ((currentEntry.SubEntries == null) || (currentEntry.SubEntries.Count < …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda

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

Silverlight 3/Prism - 将枚举值作为命令参数传递

我正在尝试使用Prism和MVVM模式来开发应用程序.在我的UI中,我定义了上一个和下一个按钮.为了在调用Web服务中使用,我已经定义了一个枚举,它将告诉我需要遍历的方向.因此,在这种情况下,按钮直接映射到枚举值.枚举定义非常简单,如下:

namespace CodeExpert.Book.Helpers
{
    public enum BookDirection { Previous = -1, NotSet = 0, Next = 1, }
}
Run Code Online (Sandbox Code Playgroud)

我在我的ViewModel中定义了我的命令和委托,并正确分配了属性.相关代码是:

public DelegateCommand PreviousNextCommand { get; set; }

public IndexEntriesViewModel(GlobalVariables globalVariable, IndexEntryOperations currentOperator)
{
    //a bunch of initialization code.
    InitializeCommands();
}

void InitializeCommands()
{
    PreviousNextCommand =
        new DelegateCommand(OnPreviousNextCommandExecute);
}

private void OnPreviousNextCommandExecute(BookDirection parameter)
{

    //Code to process based on BookDirection
}
Run Code Online (Sandbox Code Playgroud)

因此,基于此配置,我想将BookDirection枚举值传递给CommandParameter.但是,我无法为此获得XAML.这是我试过的XAML,对我来说似乎是最正确的:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                 mc:Ignorable="d"
                 x:Class="CodeExpert.Book.Views.Index"
                 d:DesignWidth="1024"
                 d:DesignHeight="768"
                 xmlns:helpers="clr-namespace:CodeExpert.Book.Helpers"
                 xmlns:command="clr-namespace:Microsoft.Practices.Composite.Presentation.Commands;assembly=Microsoft.Practices.Composite.Presentation"
                 xmlns:common="clr-namespace:System.Windows;assembly=System.Windows.Controls"
                 xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
                 xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
                 xmlns:input="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input">

    <Button x:Name="ButtonPrevious"
              HorizontalAlignment="Left"
              Margin="2,1,0,1" …
Run Code Online (Sandbox Code Playgroud)

c# silverlight enums xaml prism

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

ReSharper的CodeRush样式类型模板

我是CodeRush的忠实粉丝,也是他们围绕模板的理念.在我目前的工作中,我们将进行大量的配对,并且共识是对ReSharper(v6)的偏好,这几乎让我处于一个我必须使用它的地方.

我不打算在这里开始CodeRush/Resharper战争.Resharper有很多值得关注的东西,但有一件事我很难在ReSharper中过去.

ReSharper的Live模板机制很好,没有内置的概念来输入CodeRush的方式(至少不是我所知道的).一个简单的例子如下.生成以下代码:

public String MyStringProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)

在CodeRush中......我可以输入"as"(AutoProperty为'a',字符串为's'),然后只需更改属性名称即可.

在ReSharper中,我需要输入"prop"(对于Property),然后设置类型和名称.

ReSharper的实时模板中似乎没有关于类型感知或类型快捷方式的类似概念.因此,似乎没有类似于众多的两个和三个字符模板,以获得预先键入的变量,属性,方法等...

所以,最后问题毕竟是那个背景.在没有为每个模板/类型组合创建新的实时模板的情况下,有没有办法在ReSharper中复制"类型模板"这个概念?

c# resharper coderush

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

计算层次对象列表中所有项目的方法

我有一个简单的类定义为:

public class MyClass
{
   //Some properties
   public List<MyClass> SubEntries { get; set; }
   //Some more properties
}
Run Code Online (Sandbox Code Playgroud)

在另一个类中,我有一个上面类型的列表.目前,我有一个严重的心理障碍.我只需要遍历列表并计算MyClass的所有出现次数.由于SubEntries属性可以包含0个或多个条目,这些条目本身可以包含0个或更多条目,因此我需要某种recursice方法,除非LINQ提供了执行此操作的机制.

任何帮助释放这种心理日志果酱将不胜感激.

c# recursion hierarchy c#-3.0

4
推荐指数
1
解决办法
823
查看次数

我可以配置ServiceStack.Text来将枚举值序列化为camelCase吗?

我正在查看JSON.NET和ServiceStack.Text以将POCO对象序列化为JSON.JSON.NET似乎非常灵活,但性能成本有点高.ServiceStack.Text似乎提供了几乎所有我需要的更好的性能.ServiceStack似乎只缺少一件事......

如果我有一个包含枚举属性的对象,请说如下的枚举...

public enum PersonStatus
    {
        ActiveAgent,
        InactiveAgent
    }

public class Person
    {
        //A bunch of other properties
        public PersonStatus Status { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

如果我使用以下代码使用camelCase将ServiceStack配置设置为序列化:

ServiceStack.Text.JsConfig.EmitCamelCaseNames = true;
Run Code Online (Sandbox Code Playgroud)

我最终将Status属性序列化如下:

status:ActiveAgent

请注意,属性名称是camel case,但枚举值是PascalCase.

无论我使用ServiceStack.Text JsonSerializer还是,这种行为似乎都是一致的TypeSerializer.

在ServiceStack中是否有一种简单的方法来改变这种行为,以便值也是camelCase?

c# json.net servicestack

4
推荐指数
1
解决办法
4770
查看次数

LINQ to XML,ORM还是"完全不同"的东西?

我正在开发一个具有所有功能和限制的Silverlight项目.这是对以前产品的更新.为了快速推向市场,其目的是尽可能多地维护后端(Web服务,数据库等).如果没有别的办法,我们要求只触及后端.我们主要专注于重写前端.很快就会有一个重要的行业会议,我们想要展示产品的早期外观.在官方发布之前可能还有一段时间做一些重新工作,但后端可能需要等到V2.

好的,所以我要做的就是使用MVVM模式和我负责的前端的数据绑定(MVVM模式由上面决定).我有一个pre-existig Web服务,提供一些XML.该XML的示例如下所示:

<CODEBOOKINDEX>
    <ME Words="1" Score="25" Highscore="1">Main Entry Item
        <NM>attack</NM>
        <NM>cardiac</NM>
        <NM>chest</NM>
        <NM>effort</NM>
        <NM>heart</NM>
        <NM>pectoris</NM>
        <NM>syndrome</NM>
        <NM>vasomotor</NM>
        <IE>413.9</IE>

        <M1 Words="1" Score="25">An M1 Item (Same as ME, just first level Child)
            <IE>557.1</IE>
        </M1>

        <M1 Words="1" Score="25">Another M1 Item
        <IE>443.9</IE>
            <M2 Words="1" Score="25">An M2 Item (again same as ME, just a child of an M1 item)
                <CF>Arteriosclerosis,extremities</CF>
                <IE>440.20</IE>
            </M2>
        </M1>
    </ME></CODEBOOKINDEX>
Run Code Online (Sandbox Code Playgroud)

所以,我的问题,因为我想使用MVVM模式将其绑定到UI,在我看来,我需要将其转换为自定义对象.正如您所看到的,有许多"Entry"项,MainEntry(ME)和Subentries(本例中为M1或M2),这些都将包含某些其他节点(例如,它们都将具有IE节点),它们可以包含0个或更多其他节点类型(例如,它们可以包含或不包含一个或多个NM节点,或者它们可以包含或不包含一个CF节点).Whihc意味着(至少对我而言)我无法直接绑定到XML,因为:

  1. 它违反了MVVM模式(我可以为演示证明这一点,但稍后需要重构).
  2. 我无法将UI元素绑定到可能不存在给定项的XML节点.
  3. 在某些情况下,我要将一个集合(例如一堆NM项目)翻译成一个格式化的strig用于显示目的,我认为这不是一件小事.

因此,我正在尝试理解将此XML转换为可绑定对象的最佳方法,在我看来,这意味着将此XML转换为模型的对象,然后在该模型上覆盖视图模型.

这可以通过LINQ to XML查询轻松完成,还是我真的进入了ORM的领域,如NHibernate或Entity Framework(请不要讨论WHICH ORM的神圣战争)?
我刚刚成立,我将使用的UI控件是什么,我需要相当快速演示我的经理如何我要处理的翻译.

那么,真正的问题:

  1. 需要一个ORM吗?我并不反对使用它们,但我希望保持XAP文件的大小,并希望限制我(和我的队友)需要在一次通过中学习的新技术的数量.
  2. 如果我确实需要一个,我可以保持文件大小,我可以使用EF或NHibernatge快速提升并有一个模型很快显示?我说这里有一个星期就有一个SOMETHING ,它将从webservice获取输出并将其转换为一个对象,即使地图最初并不完美,我需要展示一些进展. …

c# linq silverlight orm

3
推荐指数
1
解决办法
1346
查看次数

通过ASMX Web服务进行序列化时保持空格/换行符

我正在ASMX Webservice(旧版.NET SOAP服务)中对XML文档进行一些预处理,以便最终在Silverlight前端使用.

我正在将该XML文档处理为POCO对象以便于使用.该对象定义如下:

public class CACDocument : ITextDocument
{
    #region Properties
    public string Title { get; set; }
    public string Text { get; set; }
    public List<Code> CodeList { get; set; }
    public XElement FormatedText { get; set; }
    #endregion

    #region Constructor
    public CACDocument()
    {
        CodeList = new List<Code>();
    }
    #endregion
}
Run Code Online (Sandbox Code Playgroud)

该对象中的Text属性包含基本格式化的文本(换行符,空格等等).提供该属性的XML节点如下所示:

<text>
   A TITLE FOLLOWED BY two line breaks


   Some text followed by a line break

   Some more text that might extend for a paragraph or two …
Run Code Online (Sandbox Code Playgroud)

.net c# web-services asmx

3
推荐指数
1
解决办法
3106
查看次数

Silverlight水印自动完成框

有人可以指导我一个可以帮助我的例子或解释:

  1. 扩展SilverLight自动完成框以允许水印.
  2. 扩展水印文本框以允许自动完成功能.

我觉得选项1最简单,但我很开放.

提前致谢.

c# silverlight watermark autocomplete

2
推荐指数
1
解决办法
3739
查看次数

LINQ to XML语法

我有一个简单的POCO类来保存从XML文件中提取的数据,定义如下:

public class Demographics
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string MiddleName { get; set; }
    public string Gender { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有一个相当简单的XML文件(或者说在这种情况下是元素)来提取数据,定义如下:

<patient determinerCode="INSTANCE">
    <name use="L">
        <given>John</given>
        <given qualifier="IN">Q.</given>
        <family>Public</family>
    </name>
    <administrativeGenderCode code="F" displayName="Female"/>   
</patient>
Run Code Online (Sandbox Code Playgroud)

我遇到的挑战是将中间的初始名称和/或名字输入到我班级的正确属性中.如您所见,名称节点内有两个给定节点,中间首字母由"IN"属性指定.是否有一个我在这里缺少的简单LINQ语法,或者我是否需要查询所有给定节点并枚举它们以正确放置每个节点?

我目前的代码如下所示:

private string GetInterfaceXmlData(XElement source)
{
        //Source in this context represents the "patient" element as you see in the example.
        //The NMSPC constant represents the namespace for …
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-xml

2
推荐指数
1
解决办法
851
查看次数