小编tan*_*sen的帖子

如何序列化工厂创建的对象

我正在开发一个通过Ninject使用依赖注入的项目.到目前为止,它运行得很好,我很喜欢DI,但现在我已经决定需要序列化一些对象,而且我发现在DI模式之后很难做到这一点.

假设我有一个名为Foo的类,它有一个Bars列表,并通过工厂生成它们,如下所示:

public class Foo
{
    private List<Bar> _bars;
    private BarFactory _barFactory;

    ...

    public void MakeBar()
    {
         _bars.Add(_barFactory.MakeBar());
    }
}
Run Code Online (Sandbox Code Playgroud)

这是Bar,它在_barFactory.MakeBar()被调用时生成.我希望Bar可序列化:

public class Bar : ISerializable
{
    private List<IPickle> _pickles;
    private PickleFactory _pickleFactory;

    public Bar(PickleFactory factory)
    {
         _pickleFactory = factory;
    }

    public void MakePickle(int x)
    {
         _pickles.Add(_pickleFactory.MakePickle(x));
    }

    public void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        //serialize member variables here
    }

    //Constructor called during deserialization
    private Bar(SerializationInfo info, StreamingContext context)
    {
        //fill in member variables with data from SerializationInfo …
Run Code Online (Sandbox Code Playgroud)

c# serialization dependency-injection ninject

9
推荐指数
1
解决办法
1788
查看次数

我可以使用JS Lint,JS Hint或其他工具阻止将错误数量的参数传递给方法吗?

我是javascript编程(以及一般的脚本语言)的新手,但是当我发生语法错误或意外声明全局变量时,我一直在使用JS Lint来帮助我.

但是,有一种情况是JS Lint没有涵盖,我觉得这将非常方便.请参阅以下代码:

(function () {
    "use strict";
    /*global alert */

    var testFunction = function (someMessage) {
        alert("stuff is happening: " + someMessage);
    };

    testFunction(1, 2);
    testFunction();
}());
Run Code Online (Sandbox Code Playgroud)

请注意,我将错误数量的参数传递给testFunction.我不会预见到我会故意遗漏一个参数或添加一个额外的参数.但是,JS Lint和JS Hint都不认为这是一个错误.

还有其他工具可以帮我抓住这个吗?或者是否有一些理由为什么传递这样的参数不应该被错误检查?

javascript jslint jshint

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