Ben kurulum için bir özel çalışılıyor gelen GetCustomAttribute bulunamayan Öznitelik aşağıdaki gibi niteliklerinC# Özel Arabirimi
[OperationContract]
[Authorization(true)]
[WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "randommethod")]
ReturnObject RandomMethod();
Ben listede görmek aşağıdakileri yapın ama ama 'is' karşılaştırma, başarısız olduğunda:
foreach(object attribute in methodInfo.GetCustomAttributes(true)) // Returns all 3 of my attributes.
if (attribute is AuthorizationAttribute) //Does not pass
Ben false döndürür aşağıdakileri yapmaya çalıştık: Ben de null döndürür aşağıdaki 2 şey yaptık
Attribute.IsDefined(methodInfo, typeof(AuthorizationAttribute));
attribute.GetType().IsAssignableFrom(typeof(AuthorizationAttribute));
:
AuthorizationAttribute authAttribute = attribute as AuthorizationAttribute;
Attribute attribute = Attribute.GetCustomAttribute(methodInfo, typeof(AuthorizationAttribute));
Ben yanlış burada ne aradığımı emin değilim. Çalışması gerektiği gibi görünüyor, ama eminim ki bir yerde basit bir hata yapıyorum. Herhangi bir anlayış?
Yardımlarınız için teşekkür ederiz.
Düzenleme: Herhangi bir anlam ekleyip eklemediğinden emin değilim, ancak Serviceizationttribute bildirimi, hizmetlerimdeki projeden farklı bir projede var. Hizmet Sözleşmesi arabirimi, AuthorizationAttribute ile aynı projede bulunur.
Bir döküm yaparak çalıştı ve şu istisna var:[A]Lib.OAuth.AuthorizationAttribute cannot be cast to [B]Lib.OAuth.AuthorizationAttribute.
Type A originates from 'Lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the
context 'LoadNeither' at location 'F:\RestServices\bin\Lib.dll'. Type B originates from 'Lib,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default' at location
'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\oauth_rest\951069b9
\9f7b77fe\assembly\dl3\54c48906\f928a6ad_01facb01\Lib.dll'.
Herhangi bir fikir?
"methodInfo" nın doğru yönteme başvurduğundan emin misiniz? – Ani
Yup, methodInfo.GetCustomAttributes (true) adını verdiğimde, tüm 3 özniteliği döndürüyor. Bazı nedenlerle, AuthorizationAttribute'umu bu dizide AuthorizationAttribute öğesinin bir örneğine atayamıyorum. – Brandon
Hata ayıklama sırasında gördüğünüz özniteliğin çalışma zamanı türünü görmek için attribute.GetType(). GetName() yapmayı deneyebilir misiniz? –