[英]Self-hosted WCF: automatically create service hosts and enable dependency injection with Autofac
我正在使用帶有許多自托管WCF服務的Windows服務。 我正在將Autofac用於DI / IoC。
WCF服務和端點是在app.config中設置的,並且通過枚舉配置的服務 ,Windows服務能夠為每個配置的WCF服務自動創建並打開ServiceHost
。
為了啟用依賴項注入,我為ServiceHost
每個新實例添加了對AddDependencyInjectionBehavior
( docs )方法的調用,但是該方法專門要求一個contractType ,此時我僅具有服務實現類型。
我可以通過使用反射查找實現的接口來檢索合同類型,但是由於這是我與Autofac一起合作的第一個項目,因此我想確保自己不會犯錯。
是否有一個優雅的解決方案,是否有任何不當做法,還是在這種情況下反思是唯一的方法?
任何輸入表示贊賞。
您可以嘗試枚舉ServiceHost的所有端點,然后從中提取ContractType。
ServiceHost host = ...
foreach (ServiceEndpoint endpoint in host.Description.Endpoints)
{
var contract = endpoint.Contract;
Type t = contract.ContractType;
host.AddDependencyInjectionBehavior(t, container);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.