2017-05-30 88 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);