public override sealed bool IsAvailable(IUserDataHolder cache)
{
using (ReadLockCookie.Create())
{
var selectedElement = Provider.SelectedElement;
var moduleReferenceResolveContext = selectedElement.GetResolveContext();
if (selectedElement != null && selectedElement.Parent is IPropertyDeclaration)
{
_propertyDeclaration = selectedElement.Parent as IPropertyDeclaration;
if (_propertyDeclaration.IsAuto && _propertyDeclaration.Parent != null
&& _propertyDeclaration.Parent.Parent is IClassDeclaration)
{
_classDeclaration = _propertyDeclaration.Parent.Parent as IClassDeclaration;
}
}
}
return _classDeclaration != null && _classDeclaration.DeclaredElement != null
&& (_classDeclaration.DeclaredElement.IsDescendantOf(CatelCore.GetDataObjectBaseTypeElement(Provider.PsiModule, _classDeclaration.GetResolveContext()))
|| _classDeclaration.DeclaredElement.IsDescendantOf(CatelCore.GetModelBaseTypeElement(Provider.PsiModule, _classDeclaration.GetResolveContext())));
}