问题列表 - 第46474页

Delphi,依赖注入和内存管理

在尝试编写可测试代码时,依赖注入肯定是最重要的概念之一.但是,虽然Java和C#具有垃圾收集功能,但Delphi没有并且通常使用所有权原则来管理对象处理(创建对象的人会破坏它).这try..finally构造很好地支持了这一点

Obj := TObject.Create;
try
  ...
finally
  Obj.Free;
end;
Run Code Online (Sandbox Code Playgroud)

现在如果使用依赖注入怎么办:

constructor TFileLister.Create(FileSystem: TFileSystem);
Run Code Online (Sandbox Code Playgroud)

谁现在应该负责摧毁这个FileSystem物体?所有权原则在这里仍然有效吗?

我知道接口是这个问题的解决方案(感谢它们是引用计数的事实).但是,如果没有接口(比如在一些遗留代码中)呢?在使用依赖注入时,还有哪些其他方法或最佳实践来处理内存管理?

delphi oop memory-management dependency-injection

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

javascript:如何在HTML img元素支持中检测SVG?

javascript:如何在HTML img元素支持中检测SVG?

我试过这个,但它不起作用:

x = new Image();
x.onload = function(){
  if (x.width) {
   alert('svg in img tag supported!');
  }
};
x.src = 'test.svg';
Run Code Online (Sandbox Code Playgroud)

javascript svg detect

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

将值从XML文件传递到Ant

我有一个XML配置文件,我希望我的ANT脚本从XML文件中获取值并根据这些值进行操作.可能吗?如果是,请描述......

xml ant build

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

Chrome:获取iFrame并插入正文

我有以下代码在Firefox中正常工作...

if (!iFrame) iFrame = outerDoc.getElementById('_dialog_iframe');
var iFrameDoc = iFrame.contentWindow.document; // get iframe doc
Run Code Online (Sandbox Code Playgroud)

和Chrome版本......

if (!iFrame) iFrame = outerDoc.getElementById('_dialog_iframe');
var iFrameDoc = iFrame.document; // get iframe doc
Run Code Online (Sandbox Code Playgroud)

我正在测试代码,iFrameDoc.body当我在Firefox中运行FireFox代码时,它运行正常.但是,Chrome代码会返回undefined.为什么?如何解决这个问题,以便它在Chrome中运行良好?

javascript iframe google-chrome google-chrome-extension

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

奇怪的预处理

奇怪的事发生了.

我在我的代码中有一个本地函数

#ifdef abc
.
.
.
#endif
Run Code Online (Sandbox Code Playgroud)

当我写在文件的顶部

#define abc
Run Code Online (Sandbox Code Playgroud)

它就像没有定义一样.只有我定义

#define abc
Run Code Online (Sandbox Code Playgroud)

在本地函数本身中,它读取ifdef中的代码.

这很奇怪,因为我认为编译器只是遍历整个文件而没有更改#preprocessing命令的函数细节.无法理解发生了什么.我正在使用visual-studio 2005.

c++ visual-studio c-preprocessor

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

如何淡化变化的背景图像

我想在执行此代码时淡化图像:

$("#large-img").css('background-image', 'url('+$img+')');
Run Code Online (Sandbox Code Playgroud)

我试过在很多地方褪色.

谢谢

jquery background fade

46
推荐指数
4
解决办法
12万
查看次数

C#阻止Collection被修改的异常

是否

 foreach(T value in new List<T>(oldList) )
Run Code Online (Sandbox Code Playgroud)

当oldList包含1百万个对象T时危险(代价高昂)?

更常见的是,在枚举期间添加/删除元素时,枚举oldList的最佳方法是什么?

c# collections enumeration

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

嵌套类的对象如何访问它们嵌套的对象?

如何从内部类中的方法获取父对象?

class OuterClass {
    public outerMethod() {
         // this refers to the object in the outer class
    }
    class InnerClass {
        public innerMethod() {
             // this refers to the object in the inner class
             // How do I get my current parent object
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一种方法是添加一个类似的方法

public OuterClass getthis() {
    return this;
}
Run Code Online (Sandbox Code Playgroud)

还有其他建议吗?有没有办法从java本身?

java

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

NotFound错误和编译失败的问题

我们经常使用WCF服务(由Silverlight使用)获得错误,这些服务并没有让我们继续下去:

The service '/ourservice.svc' cannot be activated due to an exception during compilation.  
The exception message is: Object reference not set to an instance of an object.. ---> 
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Web.Compilation.DiskBuildResultCache.CacheBuildResult(String cacheKey, BuildResult result, Int64 hashCode, DateTime utcStart)
   at System.Web.Compilation.BuildManager.CacheBuildResultInternal(String cacheKey, BuildResult result, Int64 hashCode, DateTime utcStart)
   at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) …

wcf

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

带有IF语句的SQL CONCAT

我有这个:

SELECT CONCAT(forename,' ',IFNULL(initials, ''),' ',surname) AS name FROM users
Run Code Online (Sandbox Code Playgroud)

如何更改它,以便如果initials字段为null,它也不包括后面的空格?

sql concat

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