Forge .NET API RuntimeBinderException

时间:2018-09-19 10:33:47

标签: .net autodesk-forge

我正在使用Forge .NET API 1.3.0

我正在尝试通过API获取集线器,就像example

中所述

我知道...

  • 我的身份验证有效
  • 查询结果正确的数据

但是由于某些原因,以下行由于RuntimeBinderException而失败:

Hubs hubs = apiInstance.GetHubs(/*filterId, filterExtensionType*/);

异常消息显示:

  

引发的异常:未知模块中的“ Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”。   附加信息:无法将类型'Autodesk.Forge.Model.DynamicJsonResponse'隐式转换为'Autodesk.Forge.Model.Hubs'

因此显然方法示例显示不再有效(?)。如何将结果数据转换为Hubs类型。

3 个答案:

答案 0 :(得分:1)

好的,我设法通过使用原始数据使其正常工作。举一个例子:

var hubs = await hubsApi.GetHubsAsync();
foreach (KeyValuePair<string, dynamic> hubInfo in new DynamicDictionaryItems(hubs.data))
{
  new { Id = hubInfo.Value.id, Name = hubInfo.Value.attributes.name }
}

作为参考,以下类型的数据位于“ hubs.data”数组中:

{
"type": "hubs",
"id": "b.aaaaaaaa-bbbb-cccc-1111-222223333333",
"attributes": {
    "name": "The hub",
    "extension": {
        "type": "hubs:autodesk.bim360:Account",
        "version": "1.0",
        "schema": {
            "href": "https://developer.api.autodesk.com/schema/v1/versions/hubs:autodesk.bim360:Account-1.0"
        },
        "data": {}
    }
},
"links": {
    "self": {
        "href": "https://developer.api.autodesk.com/project/v1/hubs/b.aaaaaaaa-bbbb-cccc-1111-222223333333"
    }
},
"relationships": {
    "projects": {
        "links": {
            "related": {
                "href": "https://developer.api.autodesk.com/project/v1/hubs/b.aaaaaaaa-bbbb-cccc-1111-222223333333/projects"
            }
        }
    }
}

}

答案 1 :(得分:0)

.NET tutorial显示了如何列出集线器,您还可以下载ready-to-use sampleDataManagementController代码显示了它的作用,see here

答案 2 :(得分:0)

这也发生在我身上。 我使用Json Deserializer解决了这个问题。

        string token = "a token";
        var apiInstance = new HubsApi();
        apiInstance.Configuration.AccessToken = token;

        // Get Hub
        dynamic hubsJson = apiInstance.GetHubs();
        Hubs allHubs = JsonConvert.DeserializeObject<Hubs>(hubsJson.ToString());

现在json对象将转换为Forge Api Hubs类。