0

嗨,我需要在 .Net 和 Flex 表示层之间传递一些对象。

我需要传递并接收以下对象。

 public class Room: BasicRoom
{

    private int _seatingCap; 
    private RoomType _roomType;
    private IList<Equipment> _equipment;

public virtual RoomType roomType
    {
        get { return _roomType; }
        set { _roomType = value; }
    }
    public virtual IList<Equipment> equipment
    {
        get { return _equipment; }
        set { _equipment = value; }
    }
    public virtual int seatingCap
    {
        get { return _seatingCap; }
        set { _seatingCap = value; }
    }

目前,我只是将上述(域对象)传递给表示层,这很好。但是,当我想将对象发送回 .Net 时,我遇到了问题。

因为,我使用 NHibernate 作为 orm 工具,它要求我在这种情况下使用 IList 的接口来映射集合。当我尝试将对象传递回 .Net 时出现问题 - 网关(flash remoting - fluorineFX)对输入为 IList 的设备犹豫不决并引发错误。“无法创建接口的实例”。

我显然需要将设备键入 List 而不是 IList。

有什么想法可以解决这个问题?转换成dto会更好吗?

有没有人有这方面的经验?

我对.Net 相当陌生,因此非常感谢任何帮助/指针。

4

1 回答 1

0

列表是否有任何理由需要设置器?通常,集合属性是只读的——您只需//Add它们...RemoveClear

virtual使得这更棘手 - 通常我会这样做:

public IList<Foo> Foos {get; private set;}
public Bar() { // ctor
    Foos = new List<Foo>();
}

在这种情况下,也许(因为我们不想在 ctor 中调用虚方法):

private IList<Foo> foos;
protected virtual IList<Foo> CreateFooList() {
    return new List<Foo>();
}
public IList<Foo> Foos {
    get {
        if(foos == null) foos = CreateFooList();
        return foos;
    }
}

如果这仍然不起作用,请尝试具体的列表类型。

于 2009-01-29T11:03:01.897 回答