using System;
using System.Text;
public class Test
{
public static void Main()
{
Console.WriteLine(GetFlagsStringFromUInt32Enum(ProfileTypeFlag.SupplierMaster));
}
public static string GetFlagsStringFromUInt32Enum<TEnum>(TEnum value)
where TEnum : struct
{
var sb = new StringBuilder();
for(var i = 0; i < 32; ++i)
{
var bit = (uint)1 << i;
if (((uint)(object)value & bit) != 0)
sb.Append((TEnum)(object)bit).Append(" | ");
}
if (sb.Length > 0)
sb.Length -= 3;
return sb.ToString();
}
[Flags]
public enum ProfileTypeFlag : uint
{
None = 0,
Customer = 1,
Supplier = 2,
Internal = 4,
Delegate = 8,
Master = 16,
External = 32,
CustomerMaster = Customer | Master | External,
SupplierMaster = Supplier | Master | External
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dDsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlDb25zb2xlLldyaXRlTGluZShHZXRGbGFnc1N0cmluZ0Zyb21VSW50MzJFbnVtKFByb2ZpbGVUeXBlRmxhZy5TdXBwbGllck1hc3RlcikpOwoJfQoJCglwdWJsaWMgc3RhdGljIHN0cmluZyBHZXRGbGFnc1N0cmluZ0Zyb21VSW50MzJFbnVtPFRFbnVtPihURW51bSB2YWx1ZSkKCQl3aGVyZSBURW51bSA6IHN0cnVjdAoJewoJCXZhciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CgkJCgkJZm9yKHZhciBpID0gMDsgaSA8IDMyOyArK2kpCgkJewoJCQl2YXIgYml0ID0gKHVpbnQpMSA8PCBpOwoJCQlpZiAoKCh1aW50KShvYmplY3QpdmFsdWUgJiBiaXQpICE9IDApCgkJCQlzYi5BcHBlbmQoKFRFbnVtKShvYmplY3QpYml0KS5BcHBlbmQoIiB8ICIpOwoJCX0KCQkKCQlpZiAoc2IuTGVuZ3RoID4gMCkKCQkJc2IuTGVuZ3RoIC09IDM7CgkJCQoJCXJldHVybiBzYi5Ub1N0cmluZygpOwoJfQoKCVtGbGFnc10KCXB1YmxpYyBlbnVtIFByb2ZpbGVUeXBlRmxhZyA6IHVpbnQKCXsKCSAgICBOb25lID0gMCwKCSAgICBDdXN0b21lciA9IDEsCgkgICAgU3VwcGxpZXIgPSAyLAoJICAgIEludGVybmFsID0gNCwKCSAgICBEZWxlZ2F0ZSA9IDgsCgkgICAgTWFzdGVyID0gMTYsCgkgICAgRXh0ZXJuYWwgPSAzMiwKCSAgICBDdXN0b21lck1hc3RlciA9IEN1c3RvbWVyIHwgTWFzdGVyIHwgRXh0ZXJuYWwsCgkgICAgU3VwcGxpZXJNYXN0ZXIgPSBTdXBwbGllciB8IE1hc3RlciB8IEV4dGVybmFsCgl9Cn0K