|
|
|
|
@ -42,15 +42,16 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin
@@ -42,15 +42,16 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin
|
|
|
|
|
|
|
|
|
|
IEnumerable<IEntity> AnalyzeType(IProperty analyzedEntity, ITypeDefinition type) |
|
|
|
|
{ |
|
|
|
|
var token = analyzedEntity.DeclaringTypeDefinition.MetadataToken; |
|
|
|
|
var token = analyzedEntity.MetadataToken; |
|
|
|
|
var declaringTypeToken = analyzedEntity.DeclaringTypeDefinition.MetadataToken; |
|
|
|
|
var module = analyzedEntity.DeclaringTypeDefinition.ParentModule.PEFile; |
|
|
|
|
if (!type.GetAllBaseTypeDefinitions() |
|
|
|
|
.Any(t => t.MetadataToken == token && t.ParentModule.PEFile == module)) |
|
|
|
|
var allTypes = type.GetAllBaseTypeDefinitions(); |
|
|
|
|
if (!allTypes.Any(t => t.MetadataToken == declaringTypeToken && t.ParentModule.PEFile == module)) |
|
|
|
|
yield break; |
|
|
|
|
|
|
|
|
|
foreach (var property in type.GetProperties(options: GetMemberOptions.ReturnMemberDefinitions)) { |
|
|
|
|
if (InheritanceHelper.GetBaseMembers(property, true) |
|
|
|
|
.Any(m => m.DeclaringTypeDefinition.MetadataToken == token && m.ParentModule.PEFile == module)) |
|
|
|
|
foreach (var property in type.Properties) { |
|
|
|
|
var baseMembers = InheritanceHelper.GetBaseMembers(property, true); |
|
|
|
|
if (baseMembers.Any(m => m.MetadataToken == token && m.ParentModule.PEFile == module)) |
|
|
|
|
yield return property; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|