我有3个逗号分隔的字符串 FirstName, MiddleInitial, LastName
我有一节课NameDetails:
public class NameDetails
{
public string FirstName { get; set; }
public string MiddleInitial { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有字符串的值为:
FirstName ="John1, John2, John3"
MiddleInitial = "K1, K2, K3"
LastName = "Kenndey1, Kenndey2, Kenndey3"
Run Code Online (Sandbox Code Playgroud)
我需要用逗号分隔的字符串中的值填充NameDetails列表.
任何linq为此?我需要这个用于我的asp.net mvc(C#)应用程序.
我负责一个小型开发团队,我们主要负责数据库开发.我们目前正在使用MS Visual Source Safe作为我们的源代码控制系统,但它有其局限性,我们正在认真考虑改变.你会选择什么系统?
在我的项目中,我有工作流,它在多个实体上运行以完成业务交易.表示工作流逻辑的最佳位置是什么?目前我只是创建一个"XXXManager",它负责与实体对象协作以结束业务事务.还有其他选择吗?
即当MVC不是一个选项时,MVP仍然是下一个最佳选择吗?
我想我会在这里问这个,因为我确信还有像我这样的其他人没有奢侈品参与绿地项目,并希望重构webforms UI以更好地分离演示文稿和业务对象. .
我正在开发一个遗留应用程序,其任务是添加相对较少的附加要求,增强功能和错误修复程序.
我在这里解决的应用程序部分可能被描述为一组CRUD操作的UI,这些操作是持久存储到关系数据库的业务对象.
现有UI使用MultiView控件在关联业务对象(一对一关联或一对多/父子对象)的编辑之间进行导航.是的,这是对的 - 所有这一切都在一页上.不幸的是,UserControls的使用非常少,因此标记和代码隐藏的时间长达数百行.
在每个View上,FormView通过各种ObjectDataSource管理业务对象上的CRUD.在每个FormView的ItemTemplate中,各种服务器控制数据绑定到ObjectDataSource上的字段或方法.
我想引入更多的关注点分离,并从页面代码中获取一些代码.
到目前为止,我的研究建议我可以考虑:
使用Model View Presenter的风格 ; 更具体地说 - 使用Web客户端软件工厂中的ObjectContainerDataSource,可以更轻松地在当前UI和一组新的Presenter类之间进行桥接.
使用MVC框架(不是选项)从头开始构建.
别管; 如果我需要在不同的UI场景中重用我的演示文稿,MVP模式是否合理?
如果我满意(3)我仍然想知道如何开始重构以更好地分离演示.
你会怎么做?感恩的任何其他想法......
这里有一些感兴趣的人的背景:
该领域是在药物研究领域,但这是相当无关紧要的,您可以将其视为非常典型的业务线 - 一系列设置的用户配置,这些设置构成了应用程序另一部分的操作条件.
业务对象层已经以非常一致的方式构建.虽然我可能不喜欢它,但我无法证明改变它是正确的.每个对象都是它自己的存储库/数据访问对象,因为存在"按ID获取"和"按标准获取列表"的静态方法.在可能的情况下,常见操作在抽象基类中实现.每个业务对象都将数据访问工作委托给数据访问层,该数据访问层利用ADO.NET 2.0 Provider Factory机制来保持与具体Provider相对抽象.在这方面,它与使用Microsoft企业库中的数据访问应用程序块的任何应用程序共享很多共同点.
在NUnit中编写了相当详尽的集成测试,它们从头开始设置测试数据库,因此它们需要很长时间才能运行,但至少他们会验证这些内容是否正常工作(无论如何在过去的某些时候;-).几乎没有真正的单元测试(还).
asp.net mvp webforms presentation-layer separation-of-concerns
我在LINQPad中尝试了以下代码并获得了以下结果:
List<string> listFromSplit = new List<string>("a, b".Split(",".ToCharArray())).Dump();
listFromSplit.ForEach(delegate(string s)
{
s.Trim();
});
listFromSplit.Dump();
Run Code Online (Sandbox Code Playgroud)
"a"和"b"
所以字母b没有像我期待的那样去掉白色空间......?
有人有主意吗
[注意:.Dump()方法是LINQPad中的扩展方法,它以一种漂亮的智能格式打印出任何对象的内容]
枚举何时分解?
为了支持现有系统中的新功能,我只是考虑对我的数据库模式中的实体表实施某种形式的鉴别器。
为了从做最少的事情开始,为了可读性,我首先在业务实体层决定了一个整数列和一个 C# 枚举。这将提供穷人的多态性,最终可能会发展为实际的多态性,并可能发展为策略模式。
我决定咨询博客圈,因为我从来没有完全习惯使用枚举 - 我想知道,我应该跳过枚举并直接转到结构或类吗?:
首先,我发现了一个断言,即“枚举是邪恶的”,但我觉得这是一种过度概括,并没有直接解决我的用例。
如果我确实要进行枚举,那么会很好地讨论如何通过向枚举添加额外的元数据来扩展我的里程。
接下来,我碰到的吉米·博加德的讨论枚举类和“进一步讨论战略和鉴别NHibernate的”
我应该跳过枚举并直接进入枚举类吗?或者有人对如何向我的域模型添加简单的实体鉴别器有任何其他建议。
更新:
我还要补充一点,NHibernate 和 LINQ to SQL(可能还有所有其他与 ORM 相关的数据访问方法)都使用枚举非常有吸引力,因为它们让您可以在映射中透明地映射鉴别器列。
映射一个枚举类会那么容易吗?
相关问题:
免责声明:
尽管我粗心地使用了术语实体(带有小写的“e”),但我并没有声称在这里讨论 DDD...
为映射配置的伪代码(如下)是不可能的,因为拉姆达只允许我们访问类型的IDataReader,wheras在实际测绘,AutoMapper将达到到每一个每一个"细胞" IDataRecord,而IDataReader.Read() == true:
var mappingConfig = Mapper.CreateMap<IDataReader, IEnumerable<MyDTO>>();
mappingConfig.ForMember(
destination => destination.???,
options => options.MapFrom(source => source.???));
Run Code Online (Sandbox Code Playgroud)
任何人都可以想到在运行时使用AutoMapper配置或只是满足下面要求的其他动态方法的方法.
要求是支持任何IDataReader可能具有与属性名称不匹配的列名称的传入,MyDTO并且没有我可以依赖的命名约定.相反,我们会要求用户在运行时将预期的列名称与IDataReadervia中找到的实际列名称交叉引用IDataReader.GetSchemaTable().
在我们的应用程序中,我们目前的决定是将所有工程数据存储在SI中的数据库中.
我担心在我们的数据库或.NET数字类型中我们可能会冒不具备足够精度和准确性的风险.我也担心我们可能会看到浮点数学的假象(虽然这可能是一个问题本身).
例如,源数据可能是以Psi(磅/平方英寸)表示的压力量(并从某些第三方服务读入).工程师将选择这个度量单位,因为(对于表达的数量),这将倾向于提供易于消化的,人类可读的数字而无需科学记数法.
当我们"标准化"数字时,即当我们将这个数量转换为我们自己的持久性时,我们可能会将其转换为Pa(帕斯卡),这需要将数字乘以或除以其他可能的大数字.
我们经常最终存储非常大或非常小的数字,更糟糕的是 - 我们可能会对这些数字做进一步的计算.
目前我们使用ORACLE float和System.Double.
人们怎么想这个?
UPDATE
进一步的研究已经在即将推出的F#语言(我写的CTP中)中发现了度量单位支持.
看来我们能够让F#了解用户输入,例如:
9.81<n/s^2> // an acceleration
Run Code Online (Sandbox Code Playgroud)
我们还可以创建自己的派生单位和单位系统.

(来源:msdn.com)
目前我要求在多级网格中显示相关项目.这是伟大的祖父母 - >祖父母 - >父母 - >孩子
例如:Country-> state-> City-> Street是显示顺序.
建议的解决方案是在多级网格中显示所有这些(最多4个级别).
国家 - >州 - >城市 - >街
由于我对可用性方面的解决方案不满意,我正在寻找一种将显示分解为逻辑单元的UI设计模式.
谢谢
我不想让标题太长,但这个问题特别指的是运行NServiceBus通用主机作为Windows服务(感谢TopShelf)配置为作为本地系统运行(在Vista机器上)
在上一个问题中,我解释了为什么我决定调整PubSub示例以作为Windows服务运行,以便我可以轻松地停止并启动服务,以充分证明NServiceBus正在做它本应该做的事情.
出于某种原因,我无法让Log4Net将任何内容记录到磁盘上,所以这可能只是一个Log4Net(新手)配置问题?
下面是我的强力尝试进行某种跟踪 - 我到目前为止所有文件都写成如下:
C:\日志\ < - GUID-> log4net.log
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, NServiceBus.Core"/>
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<!-- in order to configure remote endpoints use the format: "queue@machine"
input queue must be on the same machine as the process feeding off of it.
error queue can (and often should) be on a different machine.
-->
<MsmqTransportConfig
InputQueue="worker2" …Run Code Online (Sandbox Code Playgroud) CodeCampServer源代码包含一个通用的StaticFactory.
我猜想这是框架如何与依赖注入很好地结合的机制的关键部分.
其中的子类使用它的DefaultUnconfiguredState来提供对自己的默认未配置状态的静态访问,依赖解析机制可以用工作内容替换它们.
我找不到任何相关文件......
书中有一个很好的解释吗?(我正在等待从亚马逊送货......)
...或者其他任何人都能对这是什么提出一个很好的评论,以及我是否明智地采用这种模式(如果它是一个......)?
更新
由于Jeffrey Palermo回答了这个问题,我看到在MVC2 in Action的(正在进行中)手稿中,使用Factory来讨论和说明这种模式/样式,该工具用于定位存储库以保持域层无知持久性问题.(见第23章).
默认情况下,使用此工厂会引发异常:
"关于如何创建存储库的知识不在工厂中.这个工厂只代表返回存储库的能力"
该示例可能使用了几种机制之一来初始化存储库接口的具体实现.在本书的示例中,为了简单起见,他们选择不使用IOC容器,并在某些启动逻辑中明确提供它.
"重要的是,Core项目和UI项目都不应该引用基础设施项目或纯粹基础设施的库.我们已经将NHibernate完全放在一边,以便应用程序的其余部分不关心如何数据访问正在发生"
关于新章节中的示例代码的最后一点是工厂不再是静态的(至少不是涉及面向外部的接口).
更新2
Palermo先生在博客上发表了关于抽象工厂这种特殊风格的更多信息(参见OrderShipperFactory的实现).
我也可以考虑'手动依赖注入'(Uncle Bob).
更新3 - 2016年3月
这里有另一个例子,虽然Jeffrey明确表示这是演示代码,而评论表明这将配置在Mark Seeman所谓的组合根(即应用程序启动时)
我在杰弗里的文章发现了这个" 洋葱体系结构:第4部分-四年后的 "
.net dependency-injection service-locator abstract-factory onion-architecture
有没有办法让控制台应用程序知道它是从批处理文件调用而不是直接在命令提示符处调用?
询问的原因是找到一种方法来决定是否启动Console.ReadLine循环或类似于等待进一步输入,或者是否立即退出.
或者,有没有办法让批处理文件继续将输入发送到等待通过ReadLine进一步输入的控制台应用程序?
是的,我知道 - 这是两个问题.如果有人评论说第二个问题有答案,我会另外问一下.
我收到错误:
"输入字符串的格式不正确."
注意:如果我将第182行更改为引号中的实际数字(即"3"或"875"),并注释掉第171行,则此代码可以正常工作.但是,第174行中的"{7}"是一个应该自动递增的字段,但不会.所以我试图在第171行得到一个"数字",它将使用行数+ 1来进行auto- =增量.
这个上有任何人吗?:-)
171 string rowCount = string.Format("SELECT COUNT(*) FROM Log WHERE Location is NULL");
173 string sql = string.Format("insert into Log values " +
174 "('{0}','{1}',{2},{3},'{4}',#{5}#,'{6}','{7}')",
175 comboBox1.Text,
176 comboBox2.Text,
177 float.Parse(textBox1.Text),
178 float.Parse(comboBox3.Text),
179 textBox3.Text,
180 textBox2.Text,
181 addRemove,
182 int.Parse(rowCount)
183 );
Run Code Online (Sandbox Code Playgroud) c# ×4
.net ×3
asp.net ×1
automapper ×1
batch-file ×1
console ×1
enums ×1
foreach ×1
generic-list ×1
git ×1
linq ×1
log4net ×1
mvp ×1
nservicebus ×1
oop ×1
precision ×1
rowcount ×1
sql ×1
string ×1
svn ×1
system.data ×1
topshelf ×1
ui-patterns ×1
usability ×1
webforms ×1
workflow ×1