Nedenstående er fra
http://www.eksperten.dk/spm/528807// et interface
public interface ISomething
{
string GiveMeSomething();
}
interfacet er så implementeret på en klasse i en given assembly, og du "peger så på den i en konfigurationsfil" :
<add key="AssemblyName" value="SomeAssembly" />
<add key="Namespace" value="Some.Namespace" />
<add key="Class" value="SomeClass" />
// du kunne så have noget i stil med nedenstående i en factory-klasse :
// Config er så bare der hvor du suger din konfiguration
public static ISomething CreateSomething()
{
return (ISomething)CreateObject(Config.Namespace, Config.AssemblyName, Config.Class);
}
// der bruger denne her :
public static object CreateObject(string nameSpace, string assemblyPath, string className)
{
return Assembly.Load(assemblyPath).CreateInstance(nameSpace + "." + className);
}
Et eller andet sted hvor du har lyst til at bruge den :
ISomething something = Factory.CreateSomething();
string text = something.GiveMeSomething();
Det er en måde hvorpå du kan sikre dig at en mulighed for at opbygge dit samlede system af blokke med kendte formål... måden hvorpå blokken opfylder formålet er så frit til at implementere på den måde der passer i en given situation.