我试图找出什么是正确的模式和使用log4net是dependency injection框架。 Log4Net使用ILog接口,但需要我打电话 LogManager.GetLogger(Reflection.MethodBase.GetCurrentMethod().DeclaringType) 在每个类或方法中,我需要logging信息。 这似乎违背了IoC的原则,并配合我使用Log4Net。 我应该不知何故把某个地方的另一层抽象层? 此外,我需要logging像当前用户名这样的自定义属性: log4net.ThreadContext.Properties["userName"] = ApplicationCache.CurrentUserName; 我怎么能封装这个,所以我不必记得每次都这样做,仍然保持当前正在logging的方法。 我应该做这样的事情还是我完全错过了标记? public static class Logger { public static void LogException(Type declaringType, string message, Exception ex) { log4net.ThreadContext.Properties["userName"] = ApplicationCache.CurrentUserName; ILog log = LogManager.GetLogger(declaringType); log.Error(message, ex); } }
可能重复: 感叹号在函数之前做了什么? 我很久以前在JavaScript中使用以下自执行匿名函数: (function () { /* magic happens */ })() 最近,我开始看到以下模式的更多实例(例如,在Bootstrap中 ): !function () { /* presumably the same magic happens */ }() 任何人都知道第二种模式的优点是什么? 或者,这只是一种文体偏好?
最近我一直在考虑保护我的一些代码。 我很好奇如何确保一个对象不能直接创build,但只能通过工厂类的一些方法。 让我们说我有一些“业务对象”类,我想确保这个类的任何实例将有一个有效的内部状态。 为了实现这一点,我需要在创build一个对象之前执行一些检查,可能是在它的构造函数中。 这一切都可以,直到我决定让这个检查成为业务逻辑的一部分。 那么,我怎样才能安排一个业务对象,只能通过业务逻辑类中的某种方法创build,而不能直接创build? 使用C ++的旧“好友”关键字的第一个自然愿望将与C#不兼容。 所以我们需要其他的select 我们来看一个例子: public MyBusinessObjectClass { public string MyProperty { get; private set; } public MyBusinessObjectClass (string myProperty) { MyProperty = myProperty; } } public MyBusinessLogicClass { public MyBusinessObjectClass CreateBusinessObject (string myProperty) { // Perform some check on myProperty if (true /* check is okay */) return new […]
我想用材料devise的离子 。 我坚持使用离子指令与自定义CSS和angular材料 我已经阅读,使用离子指令,我们得到了很多有效的function 即使在导航到其他视图并返回到页面之后,应用程序数据也会记住使用UI路由器 离子列表项只呈现到显示高度,并在向下滚动或向上滚动时重新使用 和很多的性能改进。 但是,如果我使用离子指令,他们没有材料devise。 如果使用angular度材质,我不会有这些性能改进,以及移动应用程序所需的额外function。 angular度材料指令就像 <md-list> <md-item ng-repeat="item in items"> Hello, {{item}}! </md-item> </md-list> 离子指令就像 <ion-list> <ion-item ng-repeat="item in items"> Hello, {{item}}! </ion-item> </ion-list> 看起来像Ionic资助angular材料项目开发,那么为什么angular材料不兼容使用离子? 我怎样才能使用angular材料组件而不会失去性能改进和离子特性? 要么 使用离子材料devise有更好的主意吗?
域驱动devise的一部分,似乎没有很多细节,是如何以及为什么你应该从你的界面隔离你的域模型。 我试图说服我的同事,这是一个很好的做法,但我似乎没有取得多大进展。 他们在演示和界面层中使用的领域实体。 当我向他们争辩说,他们应该使用显示模型或DTO来隔离域层和界面层时,他们反驳说他们没有看到这样做的业务价值,因为现在你有一个UI对象来维护以及原来的域对象。 所以我正在寻找一些我可以用来支持的具体原因。 特别: 为什么我们不应该在表示层中使用域对象? (如果答案是显而易见的,“解耦”,那么请解释为什么在这方面这很重要) 我们是否应该使用额外的对象或构造来隔离我们的域对象与接口?
一个声明,检查是否是真实的,如果不打印给定的错误消息,并退出
我非常喜欢devise模式,但我很难看到什么时候可以应用它。 我已经阅读了很多devise模式解释的网站。 我理解他们中的大多数,但是我发现很难在我自己的情况下认识到一种模式。 所以,这就是为什么我问这个问题。 当使用哪种devise模式时,是否有任何指导/警告铃声? 例如,如果您正在执行switch语句以确定需要创build哪个对象,则可能需要使用工厂devise模式。 所以这种情况下的switch语句是使用Factory模式的“警钟”。 那么,你知道更多的“警钟”来确定一个devise模式吗?
我要做的一件事就是在编写任何代码之前计划应用程序的体系结构。 我并不是说收集需求来缩小应用程序需要做什么,而是有效地思考一个布局整个类,数据和stream程结构的好方法,并重复这些想法,以便我有一个可信的计划甚至在打开IDE之前的行动。 目前,只要打开IDE,创build一个空白的项目,开始写点东西,让devise从那里“长出来”,都很容易。 我收集UML是这样做的一种方法,但我没有经验,所以它似乎有点模糊。 在编写任何代码之前, 您如何规划应用程序的体系结构? 如果UML是要走的路,你可以推荐一个简洁而实用的小应用程序的开发者介绍吗? 我感谢你的意见。
这个例子来自w3schools 。 CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName) ) 我的理解是,两个列在一起( P_Id和LastName )代表人员的主键。 它是否正确? 为什么有人想使用多列作为主键而不是单列? 多less列可以一起用作给定表中的主键?
我一直在使用PHP多年,并对这门语言有了很好的把握,创造出了许多先进的和不太先进的系统,这些系统运行良好。 我遇到的问题是,只有当我发现我以前从未学过的东西需要的时候,才会学习。 这使我查找解决scheme和其他代码来处理这个问题,所以我将学习一个我以前从未见过的新function或结构。 正是通过这种方式,我学到了许多更好的技术(例如亚马逊,谷歌或其他大公司的学习课程)。 这个问题的主要问题是如果你不知道它存在,就不能学习。 例如,我花了好几个月的时间来学习empty()函数,我只是使用strlen()来检查string长度来检查空值。 我现在正在build立越来越大的系统,我已经开始阅读highscalability.com之类的博客,并且正在研究MySQL复制和服务器数据以进行扩展。 我知道你的代码结构对于使整个系统工作非常重要。 在阅读了最近关于reddit结构的博客之后,这让我质疑是否有一些标准或“接受的系统”。 我研究过框架(我曾经使用过Kohana,我后悔了,但是决定PHP框架不适合我),我更喜欢我自己的函数库,而不是框架。 我目前的结构是WordPress,Kohana和我自己的知识之间的混合。 我能看到的潜在好处是: 阅读博客 阅读教程 和其他人一起工作 读一本书 作为一个非常优秀的系统开发人员来说,“达到一个新的水平”的最好方法是什么?