本文整理汇总了C#中Func.GetType方法的典型用法代码示例。如果您正苦于以下问题:C# Func.GetType方法的具体用法?C# Func.GetType怎么用?C# Func.GetType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Func
的用法示例。
在下文中一共展示了Func.GetType方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Should_delegate_calls_to_delegate_generator_asking_about_delegate_proxy
public void Should_delegate_calls_to_delegate_generator_asking_about_delegate_proxy()
{
// Arrange
var fake = new Func<int>(() => 10);
var invoke = fake.GetType().GetMethod("Invoke");
string reason = null;
A.CallTo(() => this.delegateProxyGenerator.MethodCanBeInterceptedOnInstance(invoke, fake, out reason))
.Returns(true).AssignsOutAndRefParameters("reason");
// Act
string output = null;
var result = this.selector.MethodCanBeInterceptedOnInstance(invoke, fake, out output);
// Assert
Assert.That(result, Is.True);
Assert.That(output, Is.EqualTo("reason"));
}
示例2: GenerateMethodBody
private void GenerateMethodBody(ILGenerator generator, Jace.Execution.ParameterInfo[] parameters,
Func<Dictionary<string, double>, double> function)
{
Type dictionaryType = typeof(Dictionary<string, double>);
ConstructorInfo dictionaryConstructorInfo = dictionaryType.GetConstructor(Type.EmptyTypes);
FieldInfo functionField = typeof(FuncAdapterArguments).GetField("function",
BindingFlags.NonPublic | BindingFlags.Instance);
generator.DeclareLocal(dictionaryType);
generator.DeclareLocal(typeof(double));
generator.Emit(OpCodes.Newobj, dictionaryConstructorInfo);
generator.Emit(OpCodes.Stloc_0);
for (int i = 0; i < parameters.Length; i++)
{
Jace.Execution.ParameterInfo parameter = parameters[i];
generator.Emit(OpCodes.Ldloc_0);
generator.Emit(OpCodes.Ldstr, parameter.Name);
switch (i)
{
case 0:
generator.Emit(OpCodes.Ldarg_1);
break;
case 1:
generator.Emit(OpCodes.Ldarg_2);
break;
case 2:
generator.Emit(OpCodes.Ldarg_3);
break;
default:
generator.Emit(OpCodes.Ldarg, i + 1);
break;
}
if (parameter.DataType != DataType.FloatingPoint)
generator.Emit(OpCodes.Conv_R8);
generator.Emit(OpCodes.Callvirt, dictionaryType.GetMethod("Add", new Type[] { typeof(string), typeof(double) }));
}
generator.Emit(OpCodes.Ldarg_0);
generator.Emit(OpCodes.Ldfld, functionField);
generator.Emit(OpCodes.Ldloc_0);
generator.Emit(OpCodes.Callvirt, function.GetType().GetMethod("Invoke"));
generator.Emit(OpCodes.Ret);
}