访问尚未定义为数组的对象数组

时间:2012-07-12 16:02:07

标签: c# .net wpf arrays amfphp

我想在.NET中使用一些amfphp函数并访问某些对象。经过一番搜索,我发现了一个可以解决这个问题的开源网关。 How to use AMFPHP functions from .NET WPF application?

好的,我现在就是这样,我真的可以使用一些帮助。完成连接和正确的呼叫后

  public void Connect()
        {
            // Create NetConnection client
            _netConnection = new NetConnection();
            _netConnection.ObjectEncoding = ObjectEncoding.AMF0;
            _netConnection.NetStatus += new NetStatusHandler(_netConnection_NetStatus);
            _netConnection.Connect("http://www.mytestserver.nl/services/gateway");

            System.Console.WriteLine("*** Flash RPC ***");
            _netConnection.Call("amfphp.mytestserver.getObjects", new GetCustomersHandler(), new object[] { "415" });

            System.Console.WriteLine("Press 'Enter' to exit");
        }

在我的处理程序中

  public class GetCustomersHandler : IPendingServiceCallback
    {
        public void ResultReceived(IPendingServiceCall call)
        {
            object result = call.Result;
            System.Console.WriteLine("Server response: " + result);

            //DataAccess sample sends back an ArrayCollection (AMF3)
            ArrayCollection items = result as ArrayCollection;


            foreach (object item in items)
            {
                Flex.CustomerVO customer = item as Flex.CustomerVO;
                System.Console.WriteLine(customer.firstname + " " + customer.lastname);
            }
        }
    }

这是在samples文件夹中给出的项目中完成的方式。 我不能遍历这些项目,所以我想让我看看如何访问我的结果对象。 这就是它(至少对我而言)变得有点棘手。 我可以在列表中看到结果作为类型对象,我可以访问结果数组(?对象),但是如何在代码中遍历我的结果对象,因为它不是数组。为了澄清我添加了一些截图。

http://imageshack.us/f/685/fluorine1.png/ 从这里可以看出结果包含46个项目。

再澄清一点 http://imageshack.us/f/38/fluorine2.png/ (例如,我希望访问Key,Value等)。 有没有人有解决方案或方法。感觉并不困难(也许是这样),但我似乎错过了一些东西。 有人帮助过任何人吗?

2 个答案:

答案 0 :(得分:0)

这确实是一个阵列。它是一个对象数组(object [])。您可以像示例中所示访问它。唯一的问题是你必须知道它是什么类型的对象并将其转换为该类型。

Flex.CustomerVO customer = item as Flex.CustomerVO;

是他们施放物体的地方。

答案 1 :(得分:0)

如果要迭代对象,则需要将结果转换为对象数组:

object[] objects = (objects)result;

然后您可以通过再次投射来访问各个项目:

foreach (object obj in objects)
{
    FluorineFx.ASObject asObject = (FluorineFx.ASObject)obj;
    System.Console.WriteLine(asObject.Key);
}