private static SessionContext GetSessionContext(string currentAssemblyLocation) { var configReader = new FilesystemConfigReader(new Filesystem(), new ConfigParser()); ConfigSettings settings = configReader.GetConfig(currentAssemblyLocation); if (!settings.AssemblyLocations.Any()) settings = configReader.GetConfig(Directory.GetCurrentDirectory()); if (!settings.AssemblyLocations.Any() && !_assemblies.Any()) { var message = "No storevil assemblies were found.\r\nCurrent location:" + currentAssemblyLocation + "\r\nCurrent directory:" + Directory.GetCurrentDirectory(); _nunitAssertWrapper.Ignore(message); } var assemblyRegistry = new AssemblyRegistry(_assemblies.Select(x=>x.Location).Union(settings.AssemblyLocations)); ParameterConverter.AddCustomConverters(assemblyRegistry); _sessionContext = new SessionContext(assemblyRegistry); _extensionMethodHandler = new ExtensionMethodHandler(assemblyRegistry); return _sessionContext; }
public ScenarioInterpreterForType(Type type, ExtensionMethodHandler extensionMethodHandler, InterpreterForTypeFactory factory) { _type = type; _factory = factory; DebugTrace.Trace(GetType().Name, "Building interpreter for: " + type); const BindingFlags flags = BindingFlags.Instance | BindingFlags.Public; foreach (MemberInfo member in GetMembers(flags)) AddMatchers(member); // extension methods AddMatchersForExtensionMethods(extensionMethodHandler); }
public InterpreterForTypeFactory(ExtensionMethodHandler extensionMethodHandler) { _extensionMethodHandler = extensionMethodHandler; }
private void AddMatchersForExtensionMethods(ExtensionMethodHandler extensionMethodHandler) { foreach (var methodInfo in extensionMethodHandler.GetExtensionMethodsFor(_type)) { DebugTrace.Trace(GetType().Name, "Added extension method matcher: " + methodInfo.Name); _memberMatchers.Add(new MethodNameMatcher(methodInfo)); } }