T4Config 1.0.5

There is a newer version of this package available.
See the version list below for details.
dotnet add package T4Config --version 1.0.5                
NuGet\Install-Package T4Config -Version 1.0.5                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="T4Config" Version="1.0.5" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add T4Config --version 1.0.5                
#r "nuget: T4Config, 1.0.5"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install T4Config as a Cake Addin
#addin nuget:?package=T4Config&version=1.0.5

// Install T4Config as a Cake Tool
#tool nuget:?package=T4Config&version=1.0.5                

T4Config

A down and dirty way to have strongly typed Config Settings and Connection Strings in your projects by using T4.

In a nutshell we create an interface called IConfigurations/ IConnectionStrings, so you can do all of your fancy DI/IoC stuff, and a concrete implementation called Configurations/ ConnectionStrings. (both names totally customizable.

The T4 template loops through the web.config (or app.config) appSettings and generates a read only property for each key and returns the values placed in the settings value.

If you have a configuration section of appSettings which looked like this;

<appSettings>
    <add key="Key1" value="value1" />
    <add key="Key2" value="2212DE83-DFC3-44A8-81BA-0A8D132C1F79" />
    <add key="Key3" value="42" />
</appSettings>

After the T4 file compiles you would end up with this;

    public interface IConfigurations
    {
        string Key1 { get; }

        Guid Key2 { get; }

        int Key3 { get; }

        bool Key4 { get; }

    }

    public class Configurations : IConfigurations
    {
        private static readonly Lazy<string> _key1 = new Lazy<string>(() => GetSetting("Key1"));

        private static readonly Lazy<Guid> _key2 = new Lazy<Guid>(() => new Guid(GetSetting("Key2")));

        private static readonly Lazy<int> _key3 = new Lazy<int>(() => Convert.ToInt32(GetSetting("Key3")));

        private static readonly Lazy<bool> _key4 = new Lazy<bool>(() => Convert.ToBoolean(GetSetting("Key4")));


	public virtual string Key1  { get; } = _key1.Value;
	public virtual Guid Key2  { get; } = _key2.Value;
	public virtual int Key3  { get; } = _key3.Value;
	public virtual bool Key4  { get; } = _key4.Value;

        public static string GetSetting(string key)
        {
            return ConfigurationManager.AppSettings[key];
        }
    }

    public interface IConnectionStrings
    {
        string LocalSqlServer { get; }
    }

    public class ConnectionStrings : IConnectionStrings
    {
        private static readonly Lazy<string> _localSqlServer = new Lazy<string>(() => ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString);

	public virtual string LocalSqlServer { get; } = _localSqlServer.Value;
    }

As you can see by this output, same goes for connection strings as well!

Install

Can be install from Nuget as well;

Install-Package T4Config

https://www.nuget.org/packages/T4Config/

How do I do it

  • Copy the Configurations.tt file to the src directory of your project (or install via nuget).
  • Right click on the Configurations.tt file and click "Run Custom Tool".

Enjoy!

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.5.1 3,113 4/27/2019
1.0.5 790 4/27/2019
1.0.4.4 11,522 5/7/2015
1.0.4.3 1,224 5/7/2015
1.0.4.1 1,198 5/7/2015
1.0.3.8 1,204 4/9/2015
1.0.3.7 1,250 4/9/2015
1.0.3 1,272 4/6/2015
1.0.2 1,413 2/27/2015
1.0.1.2 1,326 2/27/2015
1.0.1 1,352 2/26/2015
1.0.0 1,481 2/26/2015