2017-05-30 83 views
0

我已经注册了服务这样的启动对象:如何解决和使用autofac和JSON

builder.RegisterType<NoticeEmail>().Keyed<INoticeChannel>(ChannelType.Email); 
builder.RegisterType<NoticePushover>().Keyed<INoticeChannel>(ChannelType.Pushover); 

,我解决这些问题如下:

public INoticeChannel Resolve(ChannelType type, string message) 
    { 
     var r = _context.ResolveKeyed<INoticeChannel>(type); 

     Type myType = Type.GetType(r.GetType().Name); 

     var t = JsonConvert.DeserializeObject(message, myType); 

     return r; 
    } 

解决是伟大的工作,但我也要喜欢用来自message的json数据初始化对象并返回特定的对象。我怎样才能做到这一点?

+0

你为什么要叫'Type.GetType(r.GetType()名称。)',而不是简单地使用'r.GetType()'? – Steven

回答

0

下面是正确的代码:

var r = _context.ResolveKeyed<INoticeChannel>(type); 

Type myType = Type.GetType(channel.GetType().AssemblyQualifiedName); 

var t = JsonConvert.DeserializeObject(message, myType);