Я пишу настраиваемый фильтр авторизации WebApi.cast actionContext.ActionArguments для типичного типа - проблемы, связанные с родовым типом
Мне нужно прочитать securitySqlConnectionString
с переменной actionContext
. Для этого мне нужно выполнить литье (например, как я пытался использовать 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