2016-02-08 19 views
7

Sto usando ReSharper (versione precedente), che mi avvisava quando uso PropertyInfo.DeclaringType che può essere null.Può PropertyInfo.DeclaringType essere mai nullo?

Non ha senso per me al primo e al secondo sguardo. È proprio vero, o ReSharper è un po 'stupido e non si accorge che è un PropertyInfo, non un generale MemberInfo?

risposta

7

PropertyInfo.DeclaringType struttura è ereditato da MemberInfo.DeclaringType e da documentation:

Se l'oggetto MemberInfo è un membro globale (cioè, se era ottenuto dal metodo Module.GetMethods, che restituisce metodi globali di un modulo), il numero restituito DeclaringType sarà null.

Quindi, in questo caso, l'avvertimento sembra soddisfacente.

4

Può essere null se la proprietà è definita in un modulo. In C# non è possibile definire tali metodi e proprietà senza riflessione (vedere PropertyBuilder). Tuttavia, se si fa riferimento a un assembly VB.NET, può avere tali membri.