本文整理汇总了C#中System.Linq.Expressions.Expression.GetMethodName方法的典型用法代码示例。如果您正苦于以下问题:C# Expression.GetMethodName方法的具体用法?C# Expression.GetMethodName怎么用?C# Expression.GetMethodName使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Linq.Expressions.Expression
的用法示例。
在下文中一共展示了Expression.GetMethodName方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Invoke
public void Invoke(IRibbonControl control, Expression<Action> caller, params object[] parameters)
{
try
{
CallbackTarget callbackTarget =
vstoContribContext.TagToCallbackTargetLookup[control.Tag + caller.GetMethodName()];
IRibbonViewModel viewModelInstance = ribbonViewModelResolver.ResolveInstanceFor(control.Context);
Type type = viewModelInstance.GetType();
PropertyInfo property = type.GetProperty(callbackTarget.Method);
if (property != null)
{
type.InvokeMember(callbackTarget.Method,
BindingFlags.SetProperty,
null,
viewModelInstance,
new[]
{
parameters.Single()
});
}
else
{
type.InvokeMember(callbackTarget.Method,
BindingFlags.InvokeMethod,
null,
viewModelInstance,
new[]
{
control
}
.Concat(parameters)
.ToArray());
}
}
catch (TargetInvocationException e)
{
var innerEx = e.InnerException;
PreserveStackTrace(innerEx);
if (vstoContribContext.ErrorHandlers.Count == 0)
{
Trace.TraceError(innerEx.ToString());
}
var handled = vstoContribContext.ErrorHandlers.Any(errorHandler => errorHandler.Handle(innerEx));
if (!handled)
throw innerEx;
}
}
示例2: InvokeGetContent
public string InvokeGetContent(IRibbonControl control, Expression<Action> caller, params object[] parameters)
{
// Remove any previous registered callbacks for this dynamic context
vstoContribContext.RemoveCallbacksForDynamicContext(control.Tag);
// Delegate to the view model to get the raw xml
var xmlString = InvokeGet(control, caller, parameters);
if (xmlString == null) return null;
// Rewrite the XML with our callbacks, registering new callback targets
var ribbonXmlRewriter = new RibbonXmlRewriter(vstoContribContext, ribbonViewModelResolver);
var ribbonType = vstoContribContext.TagToCallbackTargetLookup[control.Tag + caller.GetMethodName()].RibbonType;
return ribbonXmlRewriter.RewriteDynamicXml(ribbonType, control.Tag, xmlString.ToString());
}
示例3: InvokeGet
public object InvokeGet(IRibbonControl control, Expression<Action> caller, params object[] parameters)
{
var methodName = caller.GetMethodName();
CallbackTarget callbackTarget = vstoContribContext.TagToCallbackTargetLookup[control.Tag + methodName];
var view = (object)control.Context;
IRibbonViewModel viewModelInstance = ribbonViewModelResolver.ResolveInstanceFor(view);
VstoContribLog.Debug(l => l("Ribbon callback {0} being invoked on {1} (View: {2}, ViewModel: {3})",
methodName, control.Id, view.ToLogFormat(), viewModelInstance.ToLogFormat()));
Type type = viewModelInstance.GetType();
PropertyInfo property = type.GetProperty(callbackTarget.Method);
if (property != null)
{
return type.InvokeMember(callbackTarget.Method,
BindingFlags.GetProperty,
null,
viewModelInstance,
null);
}
try
{
return type.InvokeMember(callbackTarget.Method,
BindingFlags.InvokeMethod,
null,
viewModelInstance,
new[]
{
control
}
.Concat(parameters)
.ToArray());
}
catch (MissingMethodException)
{
throw new InvalidOperationException(
string.Format("Expecting method with signature: {0}.{1}(IRibbonControl control)",
type.Name,
callbackTarget.Method));
}
}
示例4: Invoke
public void Invoke(IRibbonControl control, Expression<Action> caller, params object[] parameters)
{
try
{
var methodName = caller.GetMethodName();
CallbackTarget callbackTarget =
vstoContribContext.TagToCallbackTargetLookup[control.Tag + methodName];
var view = (object)control.Context;
IRibbonViewModel viewModelInstance = ribbonViewModelResolver.ResolveInstanceFor(view);
VstoContribLog.Debug(l => l("Ribbon callback {0} being invoked on {1} (View: {2}, ViewModel: {3})",
methodName, control.Id, view.ToLogFormat(), viewModelInstance.ToLogFormat()));
Type type = viewModelInstance.GetType();
PropertyInfo property = type.GetProperty(callbackTarget.Method);
if (property != null)
{
type.InvokeMember(callbackTarget.Method,
BindingFlags.SetProperty,
null,
viewModelInstance,
new[]
{
parameters.Single()
});
}
else
{
type.InvokeMember(callbackTarget.Method,
BindingFlags.InvokeMethod,
null,
viewModelInstance,
new[]
{
control
}
.Concat(parameters)
.ToArray());
}
}
catch (TargetInvocationException e)
{
var innerEx = e.InnerException;
PreserveStackTrace(innerEx);
if (vstoContribContext.ErrorHandlers != null && vstoContribContext.ErrorHandlers.Count == 0)
{
Trace.TraceError(innerEx.ToString());
}
var handled = vstoContribContext.ErrorHandlers != null && vstoContribContext.ErrorHandlers.Any(errorHandler => errorHandler.Handle(innerEx));
if (!handled)
throw innerEx;
}
}
示例5: InvokeGet
public object InvokeGet(IRibbonControl control, Expression<Action> caller, params object[] parameters)
{
CallbackTarget callbackTarget = vstoContribContext.TagToCallbackTargetLookup[control.Tag + caller.GetMethodName()];
IRibbonViewModel viewModelInstance = ribbonViewModelResolver.ResolveInstanceFor(control.Context);
Type type = viewModelInstance.GetType();
PropertyInfo property = type.GetProperty(callbackTarget.Method);
if (property != null)
{
return type.InvokeMember(callbackTarget.Method,
BindingFlags.GetProperty,
null,
viewModelInstance,
null);
}
try
{
return type.InvokeMember(callbackTarget.Method,
BindingFlags.InvokeMethod,
null,
viewModelInstance,
new[]
{
control
}
.Concat(parameters)
.ToArray());
}
catch (MissingMethodException)
{
throw new InvalidOperationException(
string.Format("Expecting method with signature: {0}.{1}(IRibbonControl control)",
type.Name,
callbackTarget.Method));
}
}