本文整理汇总了C#中System.Reflection.MethodInfo.Where方法的典型用法代码示例。如果您正苦于以下问题:C# MethodInfo.Where方法的具体用法?C# MethodInfo.Where怎么用?C# MethodInfo.Where使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Reflection.MethodInfo
的用法示例。
在下文中一共展示了MethodInfo.Where方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MethodHasAppropriateOverload
static MethodInfo MethodHasAppropriateOverload(MethodInfo method, MethodInfo[] methodsOrdered)
{
var parameters = method.GetParametersOrdered();
var name = method.Name;
return methodsOrdered
.Where(x => x.Name == name)
.FirstOrDefault(x => MethodHasOverloadForApiOptions(x, parameters));
}
示例2: MethodsToBenchmarks
public static Benchmark[] MethodsToBenchmarks(Type containingType, MethodInfo[] methods, IConfig config = null)
{
var setupMethod = GetSetupMethod(methods);
var targetMethods = methods.Where(method => method.HasAttribute<BenchmarkAttribute>()).ToArray();
var parameterDefinitions = GetParameterDefinitions(containingType);
var parameterInstancesList = parameterDefinitions.Expand();
var rawJobs = config?.GetJobs().ToArray() ?? new IJob[0];
if (rawJobs.IsEmpty())
rawJobs = new[] { Job.Default };
var jobs = rawJobs.Distinct().ToArray();
var targets = GetTargets(targetMethods, containingType, setupMethod).ToArray();
var benchmarks = (
from target in targets
from job in jobs
from parameterInstance in parameterInstancesList
select new Benchmark(target, job, parameterInstance)).ToArray();
var orderProvider = config?.GetOrderProvider() ?? DefaultOrderProvider.Instance;
return orderProvider.GetExecutionOrder(benchmarks).ToArray();
}
示例3: RunTests
protected void RunTests(DbEntityProvider provider, string baselineFile, string newBaselineFile, bool executeQueries, MethodInfo[] tests)
{
this.provider = provider;
this.executeQueries = executeQueries;
ReadBaselines(baselineFile);
if (!string.IsNullOrEmpty(newBaselineFile))
{
baselineWriter = new XmlTextWriter(newBaselineFile, Encoding.UTF8);
baselineWriter.Formatting = Formatting.Indented;
baselineWriter.Indentation = 2;
baselineWriter.WriteStartDocument();
baselineWriter.WriteStartElement("baselines");
}
int iTest = 0;
int iPassed = 0;
var failures = new List<TestFailure>();
ConsoleColor originalColor = Console.ForegroundColor;
if (WriteOutput)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("Running tests: {0}", this.GetType().Name);
Console.ForegroundColor = ConsoleColor.Gray;
}
var timer = new System.Diagnostics.Stopwatch();
timer.Start();
try
{
foreach (MethodInfo method in tests.Where(m => m != null && TestIsEnabled(m)))
{
iTest++;
currentMethod = method;
string testName = method.Name.Substring(4);
bool passed = false;
if (WriteOutput)
{
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Gray;
}
SetupTest();
string reason = "";
try
{
Console.ForegroundColor = ConsoleColor.Gray;
TestMethod test = (TestMethod)Delegate.CreateDelegate(typeof(TestMethod), this, method);
test();
if (testName.EndsWith("Fails"))
{
passed = false;
reason = "Expected failure";
}
else
{
passed = true;
iPassed++;
}
}
catch (Exception tf)//(TestFailureException tf)
{
if (testName.EndsWith("Fails"))
{
passed = true;
iPassed++;
}
else if (tf.Message != null)
{
reason = tf.Message;
}
}
finally
{
TeardownTest();
}
if (!passed)
{
failures.Add(new TestFailure { TestName = method.Name, Reason = reason });
}
if (WriteOutput)
{
Console.ForegroundColor = passed ? ConsoleColor.Green : ConsoleColor.Red;
Console.WriteLine("Test {0}: {1} - {2}", iTest, method.Name, passed ? "PASSED" : "FAILED");
if (!passed && !string.IsNullOrEmpty(reason))
Console.WriteLine("Reason: {0}", reason);
}
}
}
finally
{
if (baselineWriter != null)
{
baselineWriter.WriteEndElement();
baselineWriter.Close();
}
}
//.........这里部分代码省略.........
示例4: ObjectFactory
void ObjectFactory(object instance, MethodInfo[] methods)
{
var name = new Regex("(Object)?Factory", RegexOptions.IgnoreCase);
var objectFactory = methods.Where(m =>
m.ReturnType == typeof(object)
&& m.GetParameters().Select(p => p.ParameterType).SequenceEqual(new[] { typeof(Type) })
&& name.IsMatch(m.Name))
.SingleOrDefault();
if (null != objectFactory)
{
_configuration.Factory = (Func<Type, object>)Delegate.CreateDelegate(typeof(Func<Type, object>), instance, objectFactory);
}
}
示例5: GetTargets
private static IEnumerable<Target> GetTargets(MethodInfo[] targetMethods, Type type, MethodInfo setupMethod) => targetMethods.
Where(m => m.HasAttribute<BenchmarkAttribute>()).
Select(methodInfo => CreateTarget(type, setupMethod, methodInfo, methodInfo.ResolveAttribute<BenchmarkAttribute>(), targetMethods));
示例6: GetMatchingMethod
private static MethodInfo GetMatchingMethod(MethodInfo[] methods2, MethodInfo method1)
{
ParameterInfo[] method1Params = method1.GetParameters();
foreach (MethodInfo m in methods2.Where(m => m.Name == method1.Name))
{
if (!AreTypesEqual(m.ReturnType, method1.ReturnType))
{
continue;
}
ParameterInfo[] mParams = m.GetParameters();
if (mParams.Count() == method1Params.Count())
{
bool found = true;
for (int i = 0; i < mParams.Count(); i++)
{
if (!AreTypesEqual(method1Params[i].ParameterType, mParams[i].ParameterType))
{
found = false;
break;
}
}
if (found)
{
return m;
}
}
}
return null;
}