问题列表 - 第6841页

树结构的序列化/ Derialization

我试图找出保存(序列化)和以后打开(反序列化)树结构的最佳方法.我的结构由具有不同属性的各种对象类型组成,但每个都继承自基本抽象"Node"类.

每个节点都有唯一的ID(GUID),并有一个AddSuperNode(Node nd)方法,用于设置节点的父节点.这反过来调用其他方法,允许父节点知道它具有哪些子节点.但是,某些节点还使用AddAuxSuperNode()方法向节点添加辅助父节点.

我正在使用二进制序列化,但现在我想我想使用一些我有更多控制的东西,并且序列化数据更容易访问.我还希望在反序列化时保留Type信息,并能够序列化私有值.所以DataContractSerializer似乎是最好的方式.

我不能只序列化的根节点直接因为有多个父节点.我不想创建重复的对象.所以我似乎需要将树解构为一个平面列表,然后将其序列化.然后在序列化该列表后重建树.这听起来不错吗?

就像我之前说的,每个节点都有一个唯一的GUID标识符,但是现在节点直接引用它们的父节点/子节点而不存储它们的id.我可以更新AddSuperNode()AddAuxSuperNode()方法,以便除了直接引用之外还更新要序列化的父ID列表.但是我宁愿只在序列化对象时更新/创建这个列表.所以我想在节点中创建一个UpdateSuperNodeIDRefs()方法,该方法将在序列化之前调用.

以下是我计划对此结构进行序列化和反序列化的操作.任何人都可以建议更好/更清洁/更有效的方法吗?

序列化

1)提供树结构的根节点

2)细分树结构成扁平字典(GUID ID,节点ND)其中IDGUIDND.

3)调用UpdateSuperNodeIDRefs() ; 为每个节点更新为其父节点保存的ID.

4)使用DataContractSerializer序列化节点字典

反序列化

1)反序列化节点字典

2)遍历字典中的每个节点,将每个节点重新连接到其父节点.对于存储的任何父ID,查找具有匹配ID 的字典中的相应节点调用AddSuperNode()AddAuxSuperNode()以将节点重新连接到其父节点.

3)从Dictionary中的任何节点找到结构的根

4)返回根节点

c# serialization datacontract datacontractserializer

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

在Android应用程序中使用Intent来显示另一个活动

在我的Android应用程序中,我有两个活动类.我在第一个按钮上有一个按钮,我想在点击它时显示第二个按钮,但是我收到错误.以下是课程:

public class FirstActivity extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button orderButton = (Button)findViewById(R.id.order);

    orderButton.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        Intent intent = new Intent(FirstActivity.this, OrderScreen.class);
        startActivity(intent);
      }

    });
  }
}
Run Code Online (Sandbox Code Playgroud)

单击按钮时应显示的第二个类,但从不执行:

public class OrderScreen extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.order);

    Button orderButton = (Button) findViewById(R.id.end);

    orderButton.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        finish();
      }

    });
  }
}
Run Code Online (Sandbox Code Playgroud)

如何创建一个显示第二个活动的按钮?

android android-intent android-activity

194
推荐指数
3
解决办法
41万
查看次数

如何让ssh使用不同的id_dsa

当连接到一个特定主机时,我怎么能说服id_dsa没有存储在〜/ .ssh中.

显而易见的问题是为什么.答案是这个密钥更敏感,需要密码保护,而另一个密钥用于自动化.

虽然这不是一个编程问题,但我不会惊讶地发现这需要一个编程解决方案.

ssh key

8
推荐指数
2
解决办法
3061
查看次数

查询Java数据结构

有没有办法在Java数据结构上执行SQL Like Queries或Filtering?

我想通过其中包含的对象的字段过滤ArrayList和HashMap中的对象.

java sql collections java-ee data-structures

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

超类不会调用重写方法吗?

我有以下课程:

class foo {
    public void a() {
        print("a");
    }
    public void b() {
        a();
    }
}

class bar extends foo {
    public void a() {
        print("overwritten a");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我现在调用bar.b()时,我希望它在foo中调用重写的方法a().但是,它会打印"a".

java oop polymorphism overriding

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

使用JavaScript将新属性(元素)添加到JSON对象

如何使用JavaScript向JSON对象添加新属性(元素)?

javascript json

416
推荐指数
8
解决办法
83万
查看次数

如何反序列化有些不兼容的BinaryFormatter数据?

我有一个在.NET 1.1中开发的继承代码库.当我将其迁移到2.0时,我重命名了一个程序集.现在,我发现有必要读取包含旧程序集和.NET 1.1序列化对象的旧文件. 某些字段已成功反序列化,但大多数字段都被忽略.如果我启用FormatterAssemblyStyle.Full,我会收到如下错误:

成员' T_VERSION+s_sys_ver'in class' MyNamespace.T_VERSION'不存在于序列化流中,并且未标记为System.Runtime.Serialization.OptionalFieldAttribute.

对二进制文件的检查表明T_VERSION+s_sys_ver以某种形式存在,并且字段类型没有改变.

有没有办法反序列化旧的格式文件,而不是手动逆向工程旧格式和编写我自己的手动反序列化例程?

.net serialization

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

如何在Perl中获取给定索引处的字符?

如果我有一个Perl字符串:

$str = "Hello";
Run Code Online (Sandbox Code Playgroud)

如何获得与charAt(index)类似的给定索引的字符?

string perl

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

在.NET中解析分隔的CSV

我有一个逗号分隔格式的文本文件,由"大多数字段分隔.我试图将其纳入我可以枚举的内容(例如,Generic Collection).我无法控制文件的输出方式以及它用于分隔符的字符.

在这种情况下,字段用逗号分隔,文本字段用"标记括起来.我"遇到的问题是某些字段中有引号(即8个托盘)并且意外地被拾取作为下一个字段.在数字字段的情况下,它们周围没有引号,但它们以+或 - 符号开头(描绘正/负数).

我在考虑一个RegEx,但我的技能并不是那么好,所以希望有人可以提出一些我可以尝试的想法.此文件中有大约19,000条记录,因此我尝试尽可能高效地执行此操作.以下是几行示例数据:

"00","000000112260   ","Pie Pumpkin                             ","RET","6.99 ","     ","ea ",+0000000006.99000
"00","000000304078   ","Pie Apple caramel                       ","RET","9.99 ","     ","ea ",+0000000009.99000
"00","StringValue here","8" Tray of Food                             ","RET","6.99 ","     ","ea ",-00000000005.3200
Run Code Online (Sandbox Code Playgroud)

还有更多的领域,但你可以得到图片....

我正在使用VB.NET,我有一个通用的List设置来接受数据.我已经尝试过使用CSVReader,它似乎运行良好,直到你达到第3个记录(在文本字段中引用).如果我能以某种方式让它来处理额外的引号,那么CSVReader选项将会很好用.

谢谢!

.net vb.net csv parsing

24
推荐指数
6
解决办法
7万
查看次数

如何在fogbugz区域分解?

我有一个我想要构建的Web应用程序,我应该如何使用fogbugz管理我的所有任务.

如果我想逐页列出我所拥有的所有任务,我应该使用哪些区域吗?我还想把它分解成模块,我再次使用区域?

例:

  • 用户
    • 添加用户
    • 删除用户
    • 为用户分配权限/角色

或者如果它以页面为基础,列表看起来会有所不同.

fogbugz

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