问题列表 - 第24112页

如何深度复制类而不将其标记为Serializable

鉴于以下课程:

class A
{
    public List<B> ListB;

    // etc...
}
Run Code Online (Sandbox Code Playgroud)

哪个B是可以继承/包含其他类的另一个类.


鉴于这种情况:

  1. A 是一个大类,包含许多引用类型
  2. 我无法标记B,[Serializable]因为我无法访问源代码B

以下执行深度复制的方法不起作用:

  1. 我不能使用ICloneableMemberwiseClone作为类A包含许多引用类型
  2. 我不能写一个拷贝构造函数A,因为类很大并且不断被添加到,并且包含B无法深度复制的类(如)
  3. 我无法使用序列化,因为我无法标记包含的类(例如B,没有可用的源代码)[Serializable]

我怎样才能深造课A

c# deep-copy cloning

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

迭代过程中收集异常并从该集合中删除项目

我在foreach循环中从ArrayList中删除项目并获得以下异常.

收集被修改; 枚举操作可能无法执行.

如何删除foreach中的项目,

编辑: 可能有一个项目要删除或两个或全部.

以下是我的代码:

/*
 * Need to remove all items from 'attachementsFielPath' which does not exist in names array.
 */

try
{
    string attachmentFileNames = txtAttachment.Text.Trim(); // Textbox having file names.
    string[] names = attachmentFileNames.Split(new char[] { ';' });

    int index = 0;

    // attachmentsFilePath is ArrayList holding full path of fiels user selected at any time.
    foreach (var fullFilePath in attachmentsFilePath)
    {
        bool isNeedToRemove = true;

        // Extract filename from full path.
        string fileName = …
Run Code Online (Sandbox Code Playgroud)

c# c#-3.0 c#-2.0

5
推荐指数
3
解决办法
2676
查看次数

使用RegEx识别数据库连接字符串的各个部分

我正试图掌握正则表达式:

我有一个数据库连接字符串,我想使用正则表达式来识别其中的特定键和值.

例如

server=foo;database=bar;uid=foo;pwd=bar
Run Code Online (Sandbox Code Playgroud)

我想要回复"database = bar;" 使用'database'键来识别它,理想情况下它不区分大小写.我可以使用普通代码来做到这一点,但我认为这正是设计正则表达式的那种东西.

regex

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

Windows Workflow Foundation 4(WF4)错误处理

将错误消息从WF4工作流程返回到托管ASP.NET MVC应用程序的最佳方法是什么?我需要工作流不终止,但继续处于活动状态,然后将有关错误的消息传递回托管应用程序,以便用户可以采取其他操作,但我不知道该怎么做.

error-handling workflow-foundation workflow-foundation-4

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

将bitset转换为字符串?

这段代码有什么问题?

set<string> nk ;
bitset<3> bs1(string("100"));
nk.insert(bs1.to_string());
Run Code Online (Sandbox Code Playgroud)

错误:没有匹配函数来调用`std :: bitset <3u> :: to_string()'

为什么?!

更新:

Thansk,这是有效的.但为什么它有效呢?:d

c++

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

Java中是否有goto语句?

我对此感到困惑.我们大多数人都被告知Java中没有任何goto语句.

但我发现它是Java中的关键词之一.哪里可以使用?如果它不能使用,那么为什么它作为关键字包含在Java中呢?

java syntax goto keyword

252
推荐指数
13
解决办法
38万
查看次数

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

更改textfield()鼠标移动的光标

我可以将文本字段的鼠标光标更改为可点击对象吗?

import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.net.*;
import flash.text.*;
import flash.ui.ContextMenu;
import flash.utils.*;

import mx.core.*;
Run Code Online (Sandbox Code Playgroud)

apache-flex actionscript-3

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

Delphi LoadLibrary无法找到DLL其他目录 - 有什么好的选择吗?

两个Delphi程序需要加载foo.dll,其中包含一些将客户端身份验证证书注入SOAP请求的代码.foo.dll位于c:\ fooapp\foo.dll中,通常由c:\ fooapp\foo.exe加载.这很好.另一个程序需要相同的功能,但它位于c:\ program files\unwantedstepchild\sadapp.exe中.两个aps都使用以下代码加载DLL:

FOOLib := LoadLibrary('foo.dll'); 
...
If FOOLib <> 0 then 
begin
  FOOProc := GetProcAddress(FOOLib , 'xInjectCert');
  FOOProc(myHttpRequest, Data, CertName);
end;
Run Code Online (Sandbox Code Playgroud)

它适用于foo.exe,因为dll就在那里.sadapp.exe无法加载库,因此FOOLib为0,其余的永远不会被调用.因此,sadapp.exe程序默默无法注入证书,当我们对生产进行测试时,证书缺失,连接失败.显然,我们应该完全限定DLL的路径.在没有详细介绍的情况下,测试的某些方面直到最近都掩盖了这个问题,现在修复代码基本上已经太晚了,因为这需要完整的回归测试,而且没有时间.

既然我们把自己画成了一个角落,我需要知道是否有任何我忽略的选择.虽然我们无法更改代码(对于此版本),但我们可以调整安装程序.我发现将c:\ fooapp放入路径可以正常工作.将foo.dll的第二个副本直接添加到c:\ program files\unwantedstepchild中也是如此.c:\ fooapp\foo.exe将在sadapp.exe运行时一直运行,所以我希望Windows能够找到它,但显然不是.有没有办法告诉Windows我真的想要相同的DLL?也许一个清单或什么?这是我正在寻找的那种"魔术子弹".我知道我可以:

  1. 修改Windows路径,可能在安装程序中.那很难看.
  2. 将DLL的第二个副本直接添加到unwantedstepschild文件夹中.也很难看
  3. 在我们编码和测试正确的修复时延迟项目.不能接受的.
  4. 其他?

感谢您的指导,尤其是"其他".我知道这个问题不一定是Delphi特有的.谢谢!

delphi dll path loadlibrary

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

POJO与Android中的游标

我通常倾向于使用POJO定义我的应用程序的模型层,例如文章,评论等.

我准备在我的一个ListViews的适配器中实现AlphabetIndexer.现在这个适配器接受一个文章集合,我通常从我的包装器中获取SQLiteDatabase.

AlphabetIndexer构造函数的签名如下:

public AlphabetIndexer (Cursor cursor, int sortedColumnIndex, CharSequence alphabet)
Run Code Online (Sandbox Code Playgroud)

由于这不接受Collection或类似的东西,只是一个Cursor,它让我想知道:也许我不应该为我的模型创建对象,只是使用从数据库返回的Cursors?

所以问题是,我猜:我应该怎么做,用POJO的集合表示数据,或者只是在我的应用程序中使用游标?

有什么输入?

android cursor pojo

33
推荐指数
3
解决办法
7445
查看次数