Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- EntityConnection.cs
- ObjectCache.cs
- CngAlgorithmGroup.cs
- QilList.cs
- Number.cs
- SingleConverter.cs
- ConsoleKeyInfo.cs
- Visual3D.cs
- CodeCastExpression.cs
- DataGridViewRowPostPaintEventArgs.cs
- SafeCoTaskMem.cs
- PeerHelpers.cs
- XmlElementAttributes.cs
- Triangle.cs
- Configuration.cs
- Table.cs
- DataSourceCache.cs
- ByteStack.cs
- DataGridBoolColumn.cs
- ListViewDeletedEventArgs.cs
- PageContentCollection.cs
- GenericRootAutomationPeer.cs
- TraceSource.cs
- RecognizerInfo.cs
- log.cs
- Viewport2DVisual3D.cs
- Filter.cs
- DataViewSetting.cs
- JoinSymbol.cs
- BatchParser.cs
- EnumMemberAttribute.cs
- IntranetCredentialPolicy.cs
- InheritedPropertyDescriptor.cs
- FtpWebRequest.cs
- RunClient.cs
- StorageEntityTypeMapping.cs
- CacheHelper.cs
- DataGridBoolColumn.cs
- EntitySqlQueryCacheKey.cs
- GenericTypeParameterBuilder.cs
- ServiceOperationParameter.cs
- CryptoApi.cs
- MachineKeyConverter.cs
- ResolveMatches11.cs
- UrlMappingsModule.cs
- SqlCaseSimplifier.cs
- Convert.cs
- ReliableChannelListener.cs
- GACMembershipCondition.cs
- SelectQueryOperator.cs
- XmlObjectSerializer.cs
- CommonServiceBehaviorElement.cs
- PageCache.cs
- Stylus.cs
- EndOfStreamException.cs
- Decoder.cs
- SmtpTransport.cs
- RC2CryptoServiceProvider.cs
- QuotedPrintableStream.cs
- MethodBuilderInstantiation.cs
- Transactions.cs
- Function.cs
- LambdaCompiler.Logical.cs
- CompilationSection.cs
- CompositeCollection.cs
- DataGridViewCellFormattingEventArgs.cs
- AppDomainAttributes.cs
- AutomationPatternInfo.cs
- WindowsScrollBar.cs
- ProvidersHelper.cs
- ZipIOFileItemStream.cs
- PeerResolverElement.cs
- EnglishPluralizationService.cs
- MostlySingletonList.cs
- ConfigXmlAttribute.cs
- HatchBrush.cs
- RowToFieldTransformer.cs
- BitFlagsGenerator.cs
- Document.cs
- Constraint.cs
- UnauthorizedAccessException.cs
- RegexWriter.cs
- LongMinMaxAggregationOperator.cs
- ThemeInfoAttribute.cs
- DesignerCalendarAdapter.cs
- Add.cs
- HtmlHistory.cs
- TextBoxAutoCompleteSourceConverter.cs
- TreeIterators.cs
- HtmlInputFile.cs
- XsdValidatingReader.cs
- FullTextState.cs
- XmlNavigatorStack.cs
- ImageCodecInfo.cs
- TreeViewDesigner.cs
- DrawingContextDrawingContextWalker.cs
- WebConfigurationHostFileChange.cs
- EntitySqlQueryCacheEntry.cs
- versioninfo.cs
- ObjectItemAttributeAssemblyLoader.cs