小编mar*_*_dj的帖子

Autofac - 终身和模块

问题(摘要)

给定一个注册依赖关系X的模块.依赖关系X在MVC3应用程序(每个HttpRequest的生存期)中具有不同的生命周期,然后在控制台应用程序中(具有名称的每个生命周期的依赖关系).在何处或如何指定依赖关系X的生命周期?

案件

我将所有与数据库相关的代码放在一个程序集中,其中包含一个注册所有存储库的模块.现在,ISession(Nhibernate)注册也在模块中.

ISession是依赖关系X(在给定的问题情况下).ISession在MVC3应用程序(每个请求的生命周期)中具有不同的生命周期,然后在控制台应用程序中定义命名的生命周期镜像.

ISession的注册是否应该在模块之外?会很奇怪,因为它是一个实现细节.

在这里做的最好的案例是什么?设计缺陷还是有智能结构:)

oop autofac

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

序列化树“一旦生成序列化器,类型就无法更改”

我尝试序列化一棵由 Craft 或 Reagent 组成的树:

[ProtoContract]
[ProtoInclude(1, typeof(Craft))]
[ProtoInclude(2, typeof(Reagent))]
public interface IReagent : IEquatable
{
    [ProtoMember(1)]
    int ItemId { get; set; }
    [ProtoMember(2)]
    int Quantity { get; set; }
}

[ProtoContract] public class Reagent : IReagent { [ProtoMember(1)] public int ItemId { get; set; } [ProtoMember(2)] public int Quantity { get; set; } }

[ProtoContract] public class Craft : IReagent { [ProtoMember(1)] public int Skill { get; set; }

[ProtoMember(2)]
public Profession Profession { get; set; }

[ProtoMember(3)]
public …
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)

protobuf-net

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

Scala 中的嵌套类型

我有两个关于 Scala 中嵌套类型的问题。

想象一下我有这种特质;

trait ScanList[E] {
  sealed trait Command
  case object Recover extends Command
  case class Remove(item: E) extends Command

  sealed trait Event
  case class Removed(item: E) extends Event
}
Run Code Online (Sandbox Code Playgroud)

现在我想写一个通用特征,如下所示(问题在模式匹配中编码为注释):

trait ScanListProcessor[E] {
    type SL = ScanList[E]

    def process(msg: SL#Command) = {
        msg match {
            case u:SL#Remove => // how can instantiate SL#Removed here?
            case SL#Recover => //cannot match on nested objects?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用特征的原因是我可以派生 ScanList 的新实现。在这个特质中,我也有类似的操作def shouldProcess(item: E): Boolean。对于每个实现,ScanList[E]我想编写如上所述的通用行为。

  1. 如何在泛型类型中的嵌套对象上进行模式匹配?
  2. 是否可以从类型构造函数实例化?例如:SL#Removed …

generics types scala

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

标签 统计

autofac ×1

generics ×1

oop ×1

protobuf-net ×1

scala ×1

types ×1