我有一个对象,我正在尝试序列化为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) 我正在编写一个事件记录器,使用网络工作人员在辅助进程中处理它。工作人员在本地收集事件,然后每隔几秒将它们批量发送出去。
如果浏览器或选项卡关闭,我需要一种方法来发送任何未发送的批次。网络工作者有什么办法可以监听事件之类的事情吗onclose?
我意识到我可以在应用程序本身中执行此操作,但记录器是一个将在多个地方使用的节点包,我不想让前端负责清理事件记录器。
我创建了一个节点包,希望在公司的主应用程序中使用。我的软件包和应用程序都存储在私有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密钥?
.net ×1
c# ×1
events ×1
git ×1
javascript ×1
jenkins ×1
node.js ×1
npm ×1
polymorphism ×1
web-worker ×1