在我们的应用程序中,我们对 Enum 进行了扩展
namespace System
{
/// <summary>
/// Contains extention methods for emuns.
/// </summary>
public static class EnumExtention
{
/// <summary>
/// Check is value has flag.
/// </summary>
/// <param name="value">Checked value</param>
/// <param name="checkedFlag">Checked flag.</param>
/// <returns>True if enum contains specified flag. Otherwise false</returns>
public static bool HasFlag(this Enum value, Enum checkedFlag)
{
ulong num = Convert.ToUInt64(checkedFlag);
ulong num2 = Convert.ToUInt64(value);
return (num2 & num) == num;
}
}
}
在项目的某个地方,我们有一些 Enum 和一些 Func
[Flags]
public enum MyEnum
{
zero= 0,
two = 2,
three = 3,
threetwo = two | three
}
public void SomeFunc()
{
var ThreeTwo = Myenum.threetwo;
bool _true = ThreeTwo.HasFlag(Myenum.three);
bool _false = ThreeTwo.HasFlag(Myenum.zero);
System.Windows.MessageBox.Show(String.Format("_true is: {0} and _false is : {1}", _true, _false);
}
public void СallerFunction()
{
try
{
SomeFunc();
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(String.Format("Oops! {0}"), ex.Message));
}
}
在发布模式下构建后,一切都很好,我们得到了这个:
“_true 是:true 和 _false 是:false”
但是在 Dotfuscator 处理代码之后,我们得到了以下信息:
“糟糕!MethodNotFoundException”
并且所有功能都设置为是
Dotfuscator 版本:PreEmptive ver4.9.7000 WindowsPhoneEdition
扩展有什么问题?
PS对不起我的英语。