Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / clr / src / BCL / System / __Filters.cs / 1 / __Filters.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// __Filters.cs
//
// This class defines the delegate methods for the COM+ implemented filters.
//
//
//
namespace System {
using System;
using System.Reflection;
using System.Globalization;
[Serializable()]
internal class __Filters {
// Filters...
// The following are the built in filters defined for this class. These
// should really be defined as static methods. They are used in as delegates
// which currently doesn't support static methods. We will change this
// once the compiler supports delegates.
// FilterAttribute
// This method will search for a member based upon the attribute passed in.
// filterCriteria -- an Int32 representing the attribute
internal virtual bool FilterAttribute(MemberInfo m,Object filterCriteria)
{
// Check that the criteria object is an Integer object
if (filterCriteria == null)
throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritInt"));
switch (m.MemberType)
{
case MemberTypes.Constructor:
case MemberTypes.Method: {
MethodAttributes criteria = 0;
try {
int i = (int) filterCriteria;
criteria = (MethodAttributes) i;
}
catch {
throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritInt"));
}
MethodAttributes attr;
if (m.MemberType == MemberTypes.Method)
attr = ((MethodInfo) m).Attributes;
else
attr = ((ConstructorInfo) m).Attributes;
if (((criteria & MethodAttributes.MemberAccessMask) != 0) && (attr & MethodAttributes.MemberAccessMask) != (criteria & MethodAttributes.MemberAccessMask))
return false;
if (((criteria & MethodAttributes.Static) != 0) && (attr & MethodAttributes.Static) == 0)
return false;
if (((criteria & MethodAttributes.Final) != 0) && (attr & MethodAttributes.Final) == 0)
return false;
if (((criteria & MethodAttributes.Virtual) != 0) && (attr & MethodAttributes.Virtual) == 0)
return false;
if (((criteria & MethodAttributes.Abstract) != 0) && (attr & MethodAttributes.Abstract) == 0)
return false;
if (((criteria & MethodAttributes.SpecialName) != 0) && (attr & MethodAttributes.SpecialName) == 0)
return false;
return true;
}
case MemberTypes.Field:
{
FieldAttributes criteria = 0;
try {
int i = (int) filterCriteria;
criteria = (FieldAttributes) i;
}
catch {
throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritInt"));
}
FieldAttributes attr = ((FieldInfo) m).Attributes;
if (((criteria & FieldAttributes.FieldAccessMask) != 0) && (attr & FieldAttributes.FieldAccessMask) != (criteria & FieldAttributes.FieldAccessMask))
return false;
if (((criteria & FieldAttributes.Static) != 0) && (attr & FieldAttributes.Static) == 0)
return false;
if (((criteria & FieldAttributes.InitOnly) != 0) && (attr & FieldAttributes.InitOnly) == 0)
return false;
if (((criteria & FieldAttributes.Literal) != 0) && (attr & FieldAttributes.Literal) == 0)
return false;
if (((criteria & FieldAttributes.NotSerialized) != 0) && (attr & FieldAttributes.NotSerialized) == 0)
return false;
if (((criteria & FieldAttributes.PinvokeImpl) != 0) && (attr & FieldAttributes.PinvokeImpl) == 0)
return false;
return true;
}
}
return false;
}
// FilterName
// This method will filter based upon the name. A partial wildcard
// at the end of the string is supported.
// filterCriteria -- This is the string name
internal virtual bool FilterName(MemberInfo m,Object filterCriteria)
{
// Check that the criteria object is a String object
if(filterCriteria == null || !(filterCriteria is String))
throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritString"));
// At the moment this fails if its done on a single line....
String str = ((String) filterCriteria);
str = str.Trim();
String name = m.Name;
// Get the nested class name only, as opposed to the mangled one
if (m.MemberType == MemberTypes.NestedType)
name = name.Substring(name.LastIndexOf('+') + 1);
// Check to see if this is a prefix or exact match requirement
if (str.Length > 0 && str[str.Length - 1] == '*') {
str = str.Substring(0, str.Length - 1);
return (name.StartsWith(str, StringComparison.Ordinal));
}
return (name.Equals(str));
}
// FilterIgnoreCase
// This delegate will do a name search but does it with the
// ignore case specified.
internal virtual bool FilterIgnoreCase(MemberInfo m,Object filterCriteria)
{
// Check that the criteria object is a String object
if(filterCriteria == null || !(filterCriteria is String))
throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritString"));
String str = (String) filterCriteria;
str = str.Trim();
String name = m.Name;
// Get the nested class name only, as opposed to the mangled one
if (m.MemberType == MemberTypes.NestedType)
name = name.Substring(name.LastIndexOf('+') + 1);
// Check to see if this is a prefix or exact match requirement
if (str.Length > 0 && str[str.Length - 1] == '*') {
str = str.Substring(0, str.Length - 1);
return (String.Compare(name,0,str,0,str.Length,StringComparison.OrdinalIgnoreCase)==0);
}
return (String.Compare(str,name, StringComparison.OrdinalIgnoreCase) == 0);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// __Filters.cs
//
// This class defines the delegate methods for the COM+ implemented filters.
//
//
//
namespace System {
using System;
using System.Reflection;
using System.Globalization;
[Serializable()]
internal class __Filters {
// Filters...
// The following are the built in filters defined for this class. These
// should really be defined as static methods. They are used in as delegates
// which currently doesn't support static methods. We will change this
// once the compiler supports delegates.
// FilterAttribute
// This method will search for a member based upon the attribute passed in.
// filterCriteria -- an Int32 representing the attribute
internal virtual bool FilterAttribute(MemberInfo m,Object filterCriteria)
{
// Check that the criteria object is an Integer object
if (filterCriteria == null)
throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritInt"));
switch (m.MemberType)
{
case MemberTypes.Constructor:
case MemberTypes.Method: {
MethodAttributes criteria = 0;
try {
int i = (int) filterCriteria;
criteria = (MethodAttributes) i;
}
catch {
throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritInt"));
}
MethodAttributes attr;
if (m.MemberType == MemberTypes.Method)
attr = ((MethodInfo) m).Attributes;
else
attr = ((ConstructorInfo) m).Attributes;
if (((criteria & MethodAttributes.MemberAccessMask) != 0) && (attr & MethodAttributes.MemberAccessMask) != (criteria & MethodAttributes.MemberAccessMask))
return false;
if (((criteria & MethodAttributes.Static) != 0) && (attr & MethodAttributes.Static) == 0)
return false;
if (((criteria & MethodAttributes.Final) != 0) && (attr & MethodAttributes.Final) == 0)
return false;
if (((criteria & MethodAttributes.Virtual) != 0) && (attr & MethodAttributes.Virtual) == 0)
return false;
if (((criteria & MethodAttributes.Abstract) != 0) && (attr & MethodAttributes.Abstract) == 0)
return false;
if (((criteria & MethodAttributes.SpecialName) != 0) && (attr & MethodAttributes.SpecialName) == 0)
return false;
return true;
}
case MemberTypes.Field:
{
FieldAttributes criteria = 0;
try {
int i = (int) filterCriteria;
criteria = (FieldAttributes) i;
}
catch {
throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritInt"));
}
FieldAttributes attr = ((FieldInfo) m).Attributes;
if (((criteria & FieldAttributes.FieldAccessMask) != 0) && (attr & FieldAttributes.FieldAccessMask) != (criteria & FieldAttributes.FieldAccessMask))
return false;
if (((criteria & FieldAttributes.Static) != 0) && (attr & FieldAttributes.Static) == 0)
return false;
if (((criteria & FieldAttributes.InitOnly) != 0) && (attr & FieldAttributes.InitOnly) == 0)
return false;
if (((criteria & FieldAttributes.Literal) != 0) && (attr & FieldAttributes.Literal) == 0)
return false;
if (((criteria & FieldAttributes.NotSerialized) != 0) && (attr & FieldAttributes.NotSerialized) == 0)
return false;
if (((criteria & FieldAttributes.PinvokeImpl) != 0) && (attr & FieldAttributes.PinvokeImpl) == 0)
return false;
return true;
}
}
return false;
}
// FilterName
// This method will filter based upon the name. A partial wildcard
// at the end of the string is supported.
// filterCriteria -- This is the string name
internal virtual bool FilterName(MemberInfo m,Object filterCriteria)
{
// Check that the criteria object is a String object
if(filterCriteria == null || !(filterCriteria is String))
throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritString"));
// At the moment this fails if its done on a single line....
String str = ((String) filterCriteria);
str = str.Trim();
String name = m.Name;
// Get the nested class name only, as opposed to the mangled one
if (m.MemberType == MemberTypes.NestedType)
name = name.Substring(name.LastIndexOf('+') + 1);
// Check to see if this is a prefix or exact match requirement
if (str.Length > 0 && str[str.Length - 1] == '*') {
str = str.Substring(0, str.Length - 1);
return (name.StartsWith(str, StringComparison.Ordinal));
}
return (name.Equals(str));
}
// FilterIgnoreCase
// This delegate will do a name search but does it with the
// ignore case specified.
internal virtual bool FilterIgnoreCase(MemberInfo m,Object filterCriteria)
{
// Check that the criteria object is a String object
if(filterCriteria == null || !(filterCriteria is String))
throw new InvalidFilterCriteriaException(Environment.GetResourceString("RFLCT.FltCritString"));
String str = (String) filterCriteria;
str = str.Trim();
String name = m.Name;
// Get the nested class name only, as opposed to the mangled one
if (m.MemberType == MemberTypes.NestedType)
name = name.Substring(name.LastIndexOf('+') + 1);
// Check to see if this is a prefix or exact match requirement
if (str.Length > 0 && str[str.Length - 1] == '*') {
str = str.Substring(0, str.Length - 1);
return (String.Compare(name,0,str,0,str.Length,StringComparison.OrdinalIgnoreCase)==0);
}
return (String.Compare(str,name, StringComparison.OrdinalIgnoreCase) == 0);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DrawingAttributes.cs
- XmlTextReaderImpl.cs
- BasicViewGenerator.cs
- RenderData.cs
- DesignerAdapterAttribute.cs
- BidPrivateBase.cs
- SafeNativeMethods.cs
- FileDialogCustomPlace.cs
- ChannelManagerService.cs
- ListMarkerSourceInfo.cs
- RouteData.cs
- TranslateTransform3D.cs
- SystemIPGlobalProperties.cs
- ChtmlTextWriter.cs
- SingleSelectRootGridEntry.cs
- ResourceFallbackManager.cs
- StateChangeEvent.cs
- SqlBuffer.cs
- InkCanvasSelectionAdorner.cs
- CompilerInfo.cs
- FileDialogCustomPlaces.cs
- TextDocumentView.cs
- DataSourceComponent.cs
- MergeLocalizationDirectives.cs
- ProtocolsConfiguration.cs
- MemberAssignment.cs
- EventEntry.cs
- CultureInfoConverter.cs
- IsolationInterop.cs
- GeometryCollection.cs
- VerificationException.cs
- StringCollection.cs
- EventLogInformation.cs
- DataGridCaption.cs
- GridViewCommandEventArgs.cs
- GlobalEventManager.cs
- WizardForm.cs
- AdapterDictionary.cs
- LocationSectionRecord.cs
- OperationParameterInfo.cs
- WebCategoryAttribute.cs
- Empty.cs
- ArrayConverter.cs
- DoubleMinMaxAggregationOperator.cs
- StringStorage.cs
- UserControlParser.cs
- ToggleButtonAutomationPeer.cs
- KnownIds.cs
- CodeVariableDeclarationStatement.cs
- DetailsViewInsertEventArgs.cs
- QueryAccessibilityHelpEvent.cs
- FileRecordSequenceHelper.cs
- DataPagerCommandEventArgs.cs
- LoginAutoFormat.cs
- CheckBox.cs
- XsdBuildProvider.cs
- IDQuery.cs
- QilValidationVisitor.cs
- LayoutInformation.cs
- VariableElement.cs
- GridViewEditEventArgs.cs
- WebPartMenuStyle.cs
- XmlCharacterData.cs
- SerializationInfo.cs
- RelationshipEnd.cs
- SiteOfOriginContainer.cs
- NavigationPropertyEmitter.cs
- DetailsViewInsertedEventArgs.cs
- LateBoundBitmapDecoder.cs
- SQLBinary.cs
- XsdSchemaFileEditor.cs
- DropSource.cs
- XmlSerializerNamespaces.cs
- WebPartCollection.cs
- SettingsPropertyValueCollection.cs
- _AcceptOverlappedAsyncResult.cs
- FixUpCollection.cs
- SessionIDManager.cs
- CodeGroup.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- _SpnDictionary.cs
- UserControl.cs
- MatrixCamera.cs
- BooleanProjectedSlot.cs
- RuleEngine.cs
- EntryPointNotFoundException.cs
- QilSortKey.cs
- TextTabProperties.cs
- ProjectedSlot.cs
- DynamicRenderer.cs
- Single.cs
- DrawingCollection.cs
- PointKeyFrameCollection.cs
- HttpFileCollection.cs
- SmtpMail.cs
- _AutoWebProxyScriptHelper.cs
- StringStorage.cs
- TemplateBamlTreeBuilder.cs
- IisTraceListener.cs
- RuntimeWrappedException.cs