FormHasMethod extension in D365FO
Every developer who has start working on D365FO face this issue that when we create method in form Extension
For verification of method exists or not in run time we can use Global::formHasMethod but it does not work with form extensions
So i advise everyone to use below code its working...
Source Link
using System.Object;
using Microsoft.Dynamics.Ax.Xpp;
using System.Reflection;
[ExtensionOf(classStr(Global))]
final class Global_Extension
{
static boolean formHasMethod(FormRun _fromRun, IdentifierName _methodName)
{
boolean flag= next formHasMethod(_fromRun, _methodName);
if (flag==true)
{
flag= Global::VerifyformExtensionHasMethod(_fromRun, _methodName);
}
return ret;
}
private static boolean VerifyformExtensionHasMethod(FormRun _formRun, IdentifierName _methodName)
{
try
{
System.Object[] extensions = ExtensionClassSupport::GetExtensionsOnType(_formRun.GetType(), true);
if (extensions)
{
System.Type formExtensionType;
MethodInfo mInfo;
var bindingFlags = BindingFlags::Public | BindingFlags::Static | BindingFlags::IgnoreCase;
for (int i = 0; i < extensions.Length; i++)
{
formExtensionType= extensions.GetValue(i);
var info = formExtensionType.GetMethods(bindingFlags);
for (int J = 0; J < info .get_Length(); J++)
{
mInfo= info .getValue(J);
if (mInfo.Name == _methodName)
{
return true;
}
}
}
}
}
catch (Exception::CLRError)
{
error(CLRInterop::getLastException().ToString());
}
return false;
}
}



Tidak ada komentar:
Posting Komentar