我在寫一個自定義的WebApi授權過濾器。cast actionContext.Action泛型類型參數 - 轉換爲泛型類型的問題
我需要從actionContext
變量中讀取securitySqlConnectionString
。要做到這一點,我需要進行演員表(例如我曾嘗試使用TransactionRequestBundle<SearchDefault>
),但問題是在TransactionRequestBundle<T>
,T
將會有所不同,因此下面的表演只適用於TransactionRequestBundle<SearchDefault>
類型。事實證明,我實際上並不關心存儲在T
中的信息,所以我很樂意忽略存儲在其中的信息。因此我認爲我可以逃脫object
(如圖所示),但是這給我一個運行時間的轉換錯誤。
var securitySqlConnectionString =
((TransactionRequestBundle<object>)
actionContext.ActionArguments["transactionRequestBundle"])
.Transaction.SecuritySqlConnectionString;
因此,誰能爲我提供什麼,我需要任何指導做的就是上面的線才能正常工作,具體是什麼我替換爲object
?
public class XsycoApiAuthorizationFilter
: ActionFilterAttribute, IActionFilter
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var securitySqlConnectionString =
((TransactionRequestBundle<object>)
actionContext.ActionArguments["transactionRequestBundle"])
.Transaction.SecuritySqlConnectionString;
if (CacheMachine.GetEnvironments().Count == 0)
{
CacheLoader.Load(securitySqlConnectionString);
}
base.OnActionExecuting(actionContext);
}
}
public class TransactionRequestBundle<T>
{
public Transaction Transaction;
public T Model { get; set; }
public XsycoDebugBundle XsycoDebugBundle { get; set; }
public TransactionRequestBundle()
{
this.Transaction = new Transaction();
this.XsycoDebugBundle = new XsycoDebugBundle();
this.Model = Activator.CreateInstance<T>();
}
}
public class Transaction
{
public string SecuritySqlConnectionString { get; set; }
}
非常感謝JotaBe。你的代碼爲我做了一些小的調整: – user3253659