与具有已知数据的静态测试数据库相比,使用模拟对象的优势是什么,并且在对数据库进行测试时使用事务确保没有任何更改.
我想使用c ++模板创建一个简单的整数范围检查器和转换器.
代码如下所示:
// D is the "destination" type and S the "source" type
template <class D, class S>
inline D SafeConvert( S value );
template <class S>
inline int SafeConvert<int>( S value ) {
ASSERT( value >= S(INT_MIN) && value <= S(INT_MAX) );
return int(value);
} /// error C2768: 'SafeConvert' : illegal use of explicit template arguments
template <class S>
inline size_t SafeConvert<size_t>( S value ) {
ASSERT( value >= S(0) && value <= S(size_t(-1)) );
return size_t(value);
} …Run Code Online (Sandbox Code Playgroud) 我不小心使用com.google.gwt.dev.util.collect了客户端代码中的包下定义的HashSet和HashMap .发现包没有模块xml文件,因此这些集合类不应在客户端使用.
如果不在客户端软件包中使用这些类,那么在GWT SDK中使用这些类的目的是什么?这些类肯定有一些好处,值得包含在SDK中.
我错过了什么?
可能重复:您
是否有理由无法在方法或界面中定义访问修饰符?
你好,
我对接口感到好奇.假设我有以下界面的定义
public interface IPersone
{
string FirstName { get; set; }
string LastName { get; set; }
int CalculateAge(int YearOfBirth);
}
Run Code Online (Sandbox Code Playgroud)
为什么在定义接口的方法和属性前面没有修饰符(public,private,protected)?有什么理由吗?
谢谢你的帮助
我正在使用依赖注入(从现在开始的DI)来解析组件,并且正在寻找在.NET环境中加载相关程序集的优雅解决方案.作为解释,假设我们有3个组件,A,B和C,其中A依赖于B而B依赖于C.现在我需要从组件A加载组件,但因为我使用DI,我不有一个对程序集A的引用.甚至对程序集A的引用也是不够的,因为我不知何故需要确保A,B和C都在我的输出目录中结束.
因此,一些明显的解决方案是:
- 从执行的应用程序添加对A,B和C的引用:需要知道依赖结构,在我的情况下,这是非常复杂的,这使得这是一个有点不受欢迎的解决方案.
- 将这些dll添加到GAC:在我的情况下,这不是一个选项.
所以我想知道是否有人对这个问题有一个优雅的解决方案.不确定它是否相关,但我正在使用Castle Windsor进行DI.
谢谢
Joni
在C#应用程序中,我想确定另一个.NET应用程序是否是控制台应用程序.
可以使用反射API完成吗?
编辑:好的,看起来我不会得到这个问题的好答案,因为它看起来不像框架暴露我想要的功能.我在PE/COFF规范中挖掘并提出了这个:
/// <summary>
/// Parses the PE header and determines whether the given assembly is a console application.
/// </summary>
/// <param name="assemblyPath">The path of the assembly to check.</param>
/// <returns>True if the given assembly is a console application; false otherwise.</returns>
/// <remarks>The magic numbers in this method are extracted from the PE/COFF file
/// format specification available from http://www.microsoft.com/whdc/system/platform/firmware/pecoff.mspx
/// </remarks>
bool AssemblyUsesConsoleSubsystem(string assemblyPath)
{
using (var s = new FileStream(assemblyPath, FileMode.Open, FileAccess.Read))
{
var rawPeSignatureOffset = …Run Code Online (Sandbox Code Playgroud) 有没有一种更好的方法来设置C#中的mimetypes而不是我想要提前感谢的那种.
static String MimeType(string filePath)
{
String ret = null;
FileInfo file = new FileInfo(filePath);
if (file.Extension.ToUpper() == ".PDF")
{
ret = "application/pdf";
}
else if (file.Extension.ToUpper() == ".JPG" || file.Extension.ToUpper() == ".JPEG")
{
ret = "image/jpeg";
}
else if (file.Extension.ToUpper() == ".PNG")
{
ret = "image/png";
}
else if (file.Extension.ToUpper() == ".GIF")
{
ret = "image/gif";
}
else if (file.Extension.ToUpper() == ".TIFF" || file.Extension.ToUpper() == ".TIF")
{
ret = "image/tiff";
}
else
{
ret = "image/" + file.Extension.Replace(".", ""); …Run Code Online (Sandbox Code Playgroud) 这不是一个直截了当的问题,因为我刚刚解决了它,但更像是"我是否正确"这类问题,并提醒那些可能会陷入困境的人.
事实证明,Delphi没有在堆栈上对齐变量,也没有指令/选项来控制这种行为.我的XP SP3上的默认COM编组器在编组记录时似乎需要4字节对齐.更糟糕的是,当它遇到未对齐的指针时,它不会返回错误,哦不:它将指针向下舍入到最近的4字节边界并继续这样做.
因此,如果您通过引用将已经在堆栈上分配的记录传递给COM编组功能,那么您就会被搞砸,甚至不知道.
这个问题可以通过使用New/Dispose来分配记录来解决,因为内存管理器倾向于将所有内容对齐为8个字节或更好,但是上帝,这很烦人,未对齐部分和"修剪指针"部分.
这真的是原因,还是我错了?
更新:如何重现(Delphi 2007 for Win32).
uses SysUtils;
type
TRec = packed record
a, b, c, d, e: int64;
end;
TDummy = class
protected
procedure Proc(param1: integer);
end;
procedure TDummy.Proc(param1: integer);
var a, b, c: byte;
rec: TRec;
begin
a := 5;
b := 9;
c := 100;
rec.a := param1;
rec.b := a;
rec.c := b;
rec.d := c;
writeln(IntToHex(integer(@rec), 8));
readln;
end;
var Obj: TDummy;
begin
obj := TDummy.Create;
try
obj.Proc(0);
finally
FreeAndNil(obj); …Run Code Online (Sandbox Code Playgroud) c# ×4
assemblies ×1
c++ ×1
com ×1
delphi ×1
dependencies ×1
gwt ×1
gwt2 ×1
mocking ×1
php ×1
reflection ×1
templates ×1
unit-testing ×1