【发布时间】:2014-10-24 13:01:00
【问题描述】:
所以激活器返回的类型(此处未显示)只是我创建的 POCO。没有什么特别的。但是尽管如此,GetWrapper 或 GetWrapper<T> 的返回类型是返回的对象的类型是动态的,因此智能感知没有看到正在返回的实际类的任何属性。有什么想法吗?
更新: 对不起,乔恩:
public static T GetWrapper<T>(object type, dynamic obj)
where T : class, IRedditObject
{
return GetWrapper(type, obj) as T;
}
public static object GetWrapper(object type, dynamic obj)
{
return Activator.CreateInstance(Types[type.ToString()], obj);
}
public class LinkWrapper : IRedditObject
{
private readonly dynamic _link;
public string Kind { get { return "t3"; } }
public dynamic Data { get { return _link.data; } }
public LinkWrapper(dynamic link)
{
_link = link;
}
public string Domain { get { return Data.domain; } }
}
[TestMethod]
public void Test()
{
var proxy = new SubredditProxy();
var dotnet = proxy.GetSubredditAsync("dotnet").Result;
var child1 = dotnet.data.children[0];
// this is being returned as dynamic
var obj = RedditDynamicObjectWrapperFactory.GetWrapper<LinkWrapper>(child1.kind, child1);
Assert.IsNotNull(obj);
}
【问题讨论】:
-
请将您的代码放在问题中的text中。很难按原样阅读。 (演示问题的简短但完整程序也不会受到伤害。我们不知道
child1.kind或child1的类型。) -
还有
child1和child1.kind的类型? -
这些都是动态的。我正在从 reddit 中提取一个 json 结果并将其反序列化为动态的,然后尝试将它们包装在另一个对象中。在这个阶段几乎就是这样。唯一缺少的部分是
JsonConvert.DeserializeObject<dynamic>(httpResultText);,它是 GetSubredditAsync 的结果 -
我更新了帖子以显示包装器
-
对——那就是问题所在。看我的回答:)