小编Jes*_*seF的帖子

序列化具有相同类型名称的多态List

我有一个对象,我正在尝试序列化为XML.在此对象内部是泛型类型(抽象类)的列表.此列表中的每个项可以是不同的类,但所有项都继承自抽象基类:

public abstract class animal
{
  public string type { get; set; }
}
public class cat:animal
{
  public string size { get; set; }
  public string furColor { get; set; }
}
public class fish:animal
{
  public string size { get; set; }
  public string scaleColor { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我序列化列表时,我希望它看起来像这样:

<animal type="cat">
  <size>medium</size>
  <furColor>black</furColor>
</animal>
<animal type="fish">
  <size>small</size>
  <scaleColor>silver</scaleColor>
</animal>
Run Code Online (Sandbox Code Playgroud)

我尝试过简单的解决方案:

[XmlElement("Animal")]
public List<animal> Animals { get; set; }
Run Code Online (Sandbox Code Playgroud)

但它会引发错误,因为它不期望对象类型为"cat".将[XmlInclude]标记添加到基类,派生类或整个包含类(让我们称之为动物园)对此没有帮助.

我可以将typeof指定用于单个类:

[XmlElement("Animal", typeof(cat))]
public List<animal> Animals { …
Run Code Online (Sandbox Code Playgroud)

.net c# polymorphism xmlserializer

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

有什么方法可以在网络工作人员关闭之前执行操作吗?

我正在编写一个事件记录器,使用网络工作人员在辅助进程中处理它。工作人员在本地收集事件,然后每隔几秒将它们批量发送出去。

如果浏览器或选项卡关闭,我需要一种方法来发送任何未发送的批次。网络工作者有什么办法可以监听事件之类的事情吗onclose

我意识到我可以在应用程序本身中执行此操作,但记录器是一个将在多个地方使用的节点包,我不想让前端负责清理事件记录器。

javascript events web-worker node.js

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

在Jenkins上进行npm安装期间访问私有存储库

我创建了一个节点包,希望在公司的主应用程序中使用。我的软件包和应用程序都存储在私有git存储库中。这是我package.json文件的相关部分:

"dependencies": {
    "qc-event-logger": "git+ssh://git@git-ssh.XXXXXXXXX.com/qc-event-logger.git#v1.0.0"
},
Run Code Online (Sandbox Code Playgroud)

我能够在本地运行和构建它,并且一切正常。问题是当我尝试从我们的Jenkins构建服务器进行部署时。在npm install构建任务挂起。它不会失败或引发异常,它只会停留在该步骤上,直到我杀死构建代理为止。

我不确定,但是我认为它失败了,因为它没有为节点包提供ssh密钥。我尝试添加SSH密钥凭证: 在此处输入图片说明

但这似乎只与拉下整个项目有关,我找不到将凭证附加到构建任务的任何方法。我尝试将主应用程序的git repo的凭据切换为SSH,但未采用这种方式进行设置。

有没有办法:a)将SSH密钥附加到Jenkins构建任务,或b)在调用之前npm install或作为参数在命令行中指定SSH密钥?

git npm jenkins

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

标签 统计

.net ×1

c# ×1

events ×1

git ×1

javascript ×1

jenkins ×1

node.js ×1

npm ×1

polymorphism ×1

web-worker ×1

xmlserializer ×1