在Java中,IoC/DI是一种非常常见的做法,广泛用于Web应用程序,几乎所有可用的框架和Java EE.另一方面,也有很多大的Python Web应用程序,但除了Zope(我听说代码应该非常糟糕),IoC在Python世界中似乎并不常见.(如果你认为我错了,请说出一些例子).
当然有几个流行的Java IoC框架克隆可用于Python,例如springpython.但它们似乎都没有被实际使用.至少,我从来没有在一个stumpled Django的或SQLAlchemy的 + <insert your favorite wsgi toolkit here>
,它使用类似的东西,基于Web应用程序.
在我看来,IoC具有合理的优势,并且可以很容易地替换django-default-user-model,但是在Python中广泛使用接口类和IoC看起来有点奇怪而不是"pythonic".但也许有人有更好的解释,为什么IoC没有在Python中广泛使用.
python architecture design-patterns dependency-injection inversion-of-control
我需要得到简单的xml,而不是<?xml version="1.0" encoding="utf-16"?>
在开头和xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
第一个元素中XmlSerializer
.我该怎么做?
我的实际问题是我遇到了两个版本的.NET 4.5完整设置:
50,349,920
a5e81d1b3905ada0a6e35fd6c6a2e1f4
50,352,408
d02dc8b69a702a47c083278938c4d2f1
这两个设置的版本是4.5.50709.17929
.在内部,主要的区别是netfx_Full.mzz
文件,但在使用7-zip解压缩内容后,我最终得到了大量具有相同版本的文件,即使文件内容不同(我已经检查了大约42个的大约20个随机文件)所以我无法确定哪一个更新.
有没有办法可靠地检测已安装的.NET 4.5运行时的实际版本,所以我只能在真正需要时运行安装程序?
更新
我检查了所有具有不同内容的426个文件,并且它们在两个设置中都具有相同的ProductVersion和FileVersion.因此,注册表或文件校验和是下一步.
更新2
注册表中列出的版本对于两个设置都是相同的: 4.5.50709
更新3
.NET 4.5.2现已推出:
此版本的.NET Framework与.NET Framework 3.5 SP1和早期版本并行运行,但对.NET Framework 4,.NET Framework 4.5和.NET Framework 4.5.1执行就地更新.
我决定在一个更大的项目中使用IoC原则.但是,我想得到的东西很长一段时间一直困扰着我.我得出的结论是IoC容器是一种架构模式,而不是一种设计模式.换句话说,没有类应该知道它的存在,并且应该在应用层使用容器本身来缝合所有组件.从本质上讲,它是一个精心设计的面向对象模型的选择.话虽如此,如何在不占用IoC容器的情况下访问已解析的类型(无论它们是否抽象)?我在这里看到的唯一选择是利用使用IoC容器来解析具体类型的抽象工厂.这应该很容易换掉一组标准工厂.这是一个好方法吗?有没有人在这里使用它以及它对你有用吗?还有别的吗?
谢谢!
我正在编写一个应用程序,第三方供应商可以编写插件DLL并将其放入Web应用程序的bin目录中.我希望这些插件能够在必要时注册自己的HttpModule.
无论如何,我可以在运行时向管道添加或删除HttpModule,而无需在Web.Config中有相应的条目,或者在添加/删除模块时是否必须以编程方式编辑Web.Config?我知道无论哪种方式都会导致AppDomain重启,但我宁愿能够在代码中执行它,而不是为了实现相同的效果而捏造web.config.
我听到很多人说使用IoC.Resolve()是一种不好的做法,但我从来没有听说过一个很好的理由(如果它只是测试而不是你可以嘲笑容器,那么你已经完成了).
现在使用Resolve而不是Constructor Injection的优点是你不需要在构造函数中创建具有5个参数的类,并且无论何时你要创建该类的实例,你都不需要提供它.什么
我正在使用带有msysGit的TortoiseGit,msysGit-fullinstall-1.6.4-preview20090729.exe
它以一种非常奇怪的方式工作:
About
Windows上它说它找不到git,即使所有的操作似乎都完成了Settings
窗口,General
选项卡,MSysGit
部分,即使正确的路径设置,版本是空白的(....\msysGit\bin)Settings
窗口,Git\Config
选项卡上,任何改变和保存设置的尝试都会导致一些stange text-less错误,并且关闭窗口的唯一方法是通过"Cancel"按钮如果我用mssGit安装,则前三个点不存在Git-1.6.4-preview20090730.exe
,即使在两种情况下路径设置相同(....\msysGit\cmd)
我该怎么做才能使TortoiseGit识别git安装msysGit-fullinstall-1.6.4-preview20090729.exe
?
环境:
编辑:
我不想把msysGit\bin
路径放进去msysGit\cmd
.
如果我只是从替换文件msysGit-fullinstall-1.6.4-preview20090729.exe
从一个文件Git-1.6.4-preview20090730.exe
安装,然后TortoiseGit似乎认识到Git版本,并允许我编辑在设置的Git\Config部分.鉴于环境的其余部分根本没有被修改,这至少是奇怪的.
一旦我恢复msysGit-fullinstall-1.6.4-preview20090729.exe
文件,TortoiseGit就会停止正常运行.
我已经开始在我的项目中使用Git,其中前两个提交只是一些初始设置(.gitignore和.gitattributes),第三个提交M2添加了SVN主干的内容:
I1 -- I2 -- M2 -- N -- .. -- Z
Run Code Online (Sandbox Code Playgroud)
我已经在名为svn的分支中导入了SVN历史记录,其中M1是SVN中继(内容与M2相同,除了.gitignore和.gitattributes):
A -- B -- ... -- K -- L -- M1
Run Code Online (Sandbox Code Playgroud)
问:合并两个分支的最佳方法是什么?
我可以将M1和M2合并到M3中,然后重新绑定,但我不知道如何删除I1和I2提交,如果我可以安全地删除M3提交(我已经找到一些建议来保留合并提交,但是这种情况M3不再需要了).
A -- B -- ... -- K -- L -- M1
\
M3 -- N' -- .. -- Z'
/
I1 -- I2 -- M2 -- N -- .. -- Z …
Run Code Online (Sandbox Code Playgroud) 这是一个问题:
TortoiseSvn可以在不关闭用户帐户控制的情况下在Windows 2008上运行吗?
这是故事:我刚刚将我的测试服务器移到了Windows 2008,我遇到了TortoiseSvn的问题.我以管理员身份登录,但是当我从Subversion存储库更新一些代码时,我收到一条消息: 错误无法设置文件'C:\ dev\trunk.svn\entries'读写:访问被拒绝 所以我看过这样的消息,我知道要进行清理.但是当我运行清理时,我得到: 清理无法处理以下路径:C:\ dev\trunk
因此,进一步调查使我确信我有权限问题.从命令提示符运行svn状态向我显示目录已被锁定并且运行svn cleanup失败就像乌龟清理一样.但是当我以管理员身份启动命令提示符时,我可以运行svn cleanup并解决问题,我可以运行svn并更新我的文件.
更新:这是一个Windows UAC权限问题.关闭UAC可以解决问题.但我想找到一个不需要关闭UAC的解决方案.由于Tortoise是一个Windows shell扩展,我不知道如何让它以管理员身份运行.
有什么建议?
我写了一些MSBuild自定义任务,这些任务运行良好,并在我们的CruiseControl.NET构建过程中使用.
我正在修改一个,并希望通过调用Task的Execute()方法对其进行单元测试.
但是,如果遇到包含的行
Log.LogMessage("some message here");
Run Code Online (Sandbox Code Playgroud)
它会抛出一个InvalidOperationException:
任务尝试在初始化之前进行记录.消息是......
有什么建议?(过去我在自定义任务上主要经过单元测试的内部静态方法,以避免出现此类问题.)
.net ×3
c# ×2
git ×2
.net-4.5 ×1
architecture ×1
asp.net ×1
containers ×1
factory ×1
httpmodule ×1
merge ×1
msbuild ×1
msbuild-task ×1
msysgit ×1
python ×1
rebase ×1
tortoisegit ×1
tortoisesvn ×1
uac ×1
web-config ×1