public static void Proxy_Declares_Interface_Indexers() { TestType_IIndexerService proxy = DispatchProxy.Create <TestType_IIndexerService, TestDispatchProxy>(); PropertyInfo propertyInfo = proxy.GetType().GetTypeInfo().GetDeclaredProperty("Item"); Assert.NotNull(propertyInfo); }
public static void Invoke_Indexer_Setter_And_Getter_Invokes_Correct_Methods() { List <MethodInfo> invokedMethods = new List <MethodInfo>(); TestType_IIndexerService proxy = DispatchProxy.Create <TestType_IIndexerService, TestDispatchProxy>(); ((TestDispatchProxy)proxy).CallOnInvoke = (method, args) => { invokedMethods.Add(method); return(null); }; proxy["key"] = "testValue"; string actualValue = proxy["key"]; Assert.True(invokedMethods.Count == 2, String.Format("Expected 2 method invocations but received {0}", invokedMethods.Count)); PropertyInfo propertyInfo = typeof(TestType_IIndexerService).GetTypeInfo().GetDeclaredProperty("Item"); Assert.NotNull(propertyInfo); MethodInfo expectedMethod = propertyInfo.SetMethod; Assert.True(invokedMethods[0] != null && expectedMethod == invokedMethods[0], String.Format("First invoke should have been {0} but actual was {1}", expectedMethod.Name, invokedMethods[0])); expectedMethod = propertyInfo.GetMethod; Assert.True(invokedMethods[1] != null && expectedMethod == invokedMethods[1], String.Format("Second invoke should have been {0} but actual was {1}", expectedMethod.Name, invokedMethods[1])); Assert.Null(actualValue); }