c# - Should I be using generics to simplify my configuration provider class? -
i attempting write configuration manager can supply configuration settings different providers (e.g. settings files, environment variables, databases etc).
i have envisioned settings either strings, ints or doubles , identified name
settings provided via classes implementing this:
public interface iconfigurationmanagerprovider { t getsetting<t>(string name); ienumerable<configurationsetting> getknownsettings(); }
as start trying write provider return environment variables
public class environmentvariableprovider : iconfigurationmanagerprovider { public t getsetting<t>(string name) { string value = environment.getenvironmentvariable(name); return value t; } public ienumerable<configurationsetting> getknownsettings() { return new list<configurationsetting> { new configurationsetting("my_tracing", typeof (string)), }; } }
however won't compile can't cast t. if put class constraint in limits me strings
public t getsetting<t>(string name) t : class { string value = environment.getenvironmentvariable(name); return value t; }
really provider can supply strings (other providers different) want code access configuration settings clean possible using like:
public interface iconfigurationmanagerconsumer { t getconfiguration<t>(string name, t systemdefault); }
and used this:
string tracing = configurationmanager.getconfiguration("my_tracing", "unknown");
or this:
int maxusercount = = configurationmanager.getconfiguration("max user count", 10);
or this:
double pi = configurationmanager.getconfiguration("pi", 3.14159);
am going in right direction?
return (t)convert.changetype(value, typeof(t));
Comments
Post a Comment