/// <summary> /// Realizes implementation of a contract by mediating access to a <see cref="DelegateIndex"/> /// </summary> /// <typeparam name="TContract">The type of realized contract</typeparam> /// <returns></returns> internal static TContract Realize <TContract>(string implementationName, DelegateIndex delegates) { var implementation = new DelegatedContract(implementationName, delegates); var type = DynamicContractImplementor.ImplementContract <TContract>(implementationName); return((TContract)Activator.CreateInstance(type, implementation)); }
/// <summary> /// Realizes implementation of a user-defined contract by delegating through a <see cref="IDynamicContractMessenger"/> implementation /// </summary> /// <typeparam name="TContract">The type of realized contract</typeparam> /// <param name="messenger">The dynamic contract</param> /// <returns></returns> public static TContract Realize <TContract>(IDynamicContractMessenger messenger) { var type = DynamicContractImplementor.ImplementContract <TContract>(messenger.ImplementationName); return((TContract)Activator.CreateInstance(type, messenger)); }