Skip to content

Instantly share code, notes, and snippets.

@wattsm
wattsm / make-list-of.fs
Last active December 20, 2015 04:19
Creating an F# list via reflection
let makeListOf itemType (items : obj list) =
let listType =
makeGenericType
<| typedefof<Microsoft.FSharp.Collections.List<_>>
<| [ itemType; ]
let add =
let cons =
@wattsm
wattsm / make-seq-of.fs
Last active December 20, 2015 04:19
Create an F# sequence using reflection
let makeSeqOf itemType (items : obj list) =
let seqType =
makeGenericType
<| typedefof<List<_>>
<| [ itemType; ]
let sequence =
Activator.CreateInstance seqType
@wattsm
wattsm / make-generic-type-usage.fs
Created July 24, 2013 12:12
Using makeGenericType
let intOptionType =
makeGenericType
<| typedefof<Option<_>>
<| [ typeof<Int32> ]
@wattsm
wattsm / make-generic-type.fs
Last active December 20, 2015 04:19
Creating generic types in F#.
let makeGenericType (baseType : Type) (types : Type list) =
if (not baseType.IsGenericTypeDefinition) then
invalidArg "baseType" "The base type specified was not a generic type definition."
baseType.MakeGenericType (
types
|> List.toArray
)
@wattsm
wattsm / header-based-settings-provider-config.xml
Last active October 11, 2015 17:58
Header based settings provider configuration
<consumer name='Test' type='MyAssembly.MyConsumer, MyAssembly'>
<settings>
<add key='mapping-name' value='example' />
<add key='mapping-file-name' value='example-mappings.xml' />
<provider
type='Tribal.Switchboard.Extensions.Mapping.HeaderBasedSettingProvider, Tribal.Switchboard.Extensions'
/>
</settings>
</consumer>
@wattsm
wattsm / example-header-mapping.xml
Created October 16, 2012 08:01
Example header mapping
<mappings xmlns='http://www.tribalgroup.com/switchboard/header-mapping.xsd'>
<mapping name='example'>
<header name='LocationCode'>
<settings for='Inst-01'>
<add key='URL' value='http://inst-01/' />
</settings>
<settings for='Inst-02'>
<add key='URL' value='http://inst-02/' />
</settings>
@wattsm
wattsm / example-consumer-factory.cs
Created October 16, 2012 07:36
Example message consumer factory
public class ExampleConsumerFactory : ConsumerFactoryBase {
public override IEnumerable<IMessageConsumer> GetConsumers(IMessageContext messageContext) {
var consumers = new List<IMessageConsumer>();
if(messageContext.Message.Headers.Exists("queues")) {
var queues = messageContext
.Message
@wattsm
wattsm / consumer-factory-consumer-settings-config.xml
Created October 16, 2012 07:23
Example message consumer factory consumer settings config
<factory name='TestFactory' type='MyAssembly.MyFactory, MyAssembly'>
<consumer-settings>
<add ... />
<provider ... />
</consumer-settings>
</factory>
@wattsm
wattsm / consume-factory-settings-config.xml
Created October 16, 2012 07:18
Example message consumer factory settings config
<factory name='TestFactory' type='MyAssembly.MyFactory, MyAssembly'>
<factory-settings>
<add key='setting-key' value='setting-value' />
</factory-settings>
</factory>
@wattsm
wattsm / consume-factory-config.xml
Created October 15, 2012 14:59
Example message consumer factory config
<factory
name='TestFactory'
type='MyAssembly.MyFactory, MyAssembly'
/>