您好我需要将一些对象传递给.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 - fluorFX)在设备被输入为IList时抛出并抛出错误。 “无法创建接口实例”。
我急需将设备输入List而不是IList。
有什么想法可以解决这个问题? 转换为dto会更好吗?
有没有人有这方面的经验?
我对.Net相当新,所以任何帮助/指针都非常感激。
答案 0 :(得分:0)
列表是否需要有一个setter?通常,集合属性是只读的 - 您只需Add
/ Remove
/ Clear
他们......
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;
}
}
如果仍然无效,请尝试具体的列表类型。