public static class FileAttributesExtender { // Return lhs flags plus rhs flags public static FileAttributes Union(this FileAttributes lhs, FileAttributes rhs) { return lhs | rhs; } // Return flags common to lhs and rhs public static FileAttributes Intersection(this FileAttributes lhs, FileAttributes rhs) { return lhs & rhs; } // Return lhs flags minus rhs flags public static FileAttributes Difference(this FileAttributes lhs, FileAttributes rhs) { FileAttributes common = Intersection(lhs, rhs); int res = (int)lhs - (int)common; return (FileAttributes)(res); } // Return true if lhs contains ALL the flags within rhs public static bool Contains(this FileAttributes lhs, FileAttributes rhs) { FileAttributes common = Intersection(lhs, rhs); return (common == rhs); } // Return true if lhs contains any of the flags within rhs public static bool ContainsAnyOf(this FileAttributes lhs, FileAttributes rhs) { FileAttributes common = Intersection(lhs, rhs); return ((int)common > 0); } // Return true if lhs contains none of the flags within rhs public static bool ContainsNoneOf(this FileAttributes lhs, FileAttributes rhs) { FileAttributes common = Intersection(lhs, rhs); return ((int)common == 0); } // NON-extension methods here public static FileAttributes FromString(string source) { FileAttributes res = (FileAttributes)Enum.Parse(typeof(FileAttributes), source, true); return res; } }
July 16, 2010
FileAttributesExtender
Use Flags based enumerated types extender class to extend file attributes and give it Set/group theory like methods
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment