ZayniFramework.Formatting 2.3.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package ZayniFramework.Formatting --version 2.3.0
                    
NuGet\Install-Package ZayniFramework.Formatting -Version 2.3.0
                    
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="ZayniFramework.Formatting" Version="2.3.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ZayniFramework.Formatting" Version="2.3.0" />
                    
Directory.Packages.props
<PackageReference Include="ZayniFramework.Formatting" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ZayniFramework.Formatting --version 2.3.0
                    
#r "nuget: ZayniFramework.Formatting, 2.3.0"
                    
#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.
#addin nuget:?package=ZayniFramework.Formatting&version=2.3.0
                    
Install as a Cake Addin
#tool nuget:?package=ZayniFramework.Formatting&version=2.3.0
                    
Install as a Cake Tool

Formatting module example.

Add Formatting section in your app.config or web.config file if you are going to do some DateTime formatting.

<FormattingSettings>
    <DateTimeFormatStyle>
        <add language="zh-TW" format="yyyy/MM/dd" isDefault="true"/>
        <add language="zh-CN" format="yyyy/MM/dd"/>
        <add language="en-US" format="MM-dd-yyyy"/>
    </DateTimeFormatStyle>
</FormattingSettings>

Then you can add the Formatting Attribute in your Properties.

using ZayniFramework.Formatting;

public class MasterModel : BasicModel<MasterVModel>
{
    // For deep formatting
    [CollectionFormat()]
    public List<DetailModel> Details { get; set; }
    
    public string Name { get; set; }

    [DateFormat()]
    public DateTime Birthday { get; set; }

    [NumberFormat( Length = 2 )]
    public decimal Age { get; set; }
    
    [CollectionFormat()]
    public DetailInfoModel DetailInfo { get; set; }
}

public class MasterVModel : BasicViewModel
{
    public string Name { get; set; }

    public string Birthday { get; set; }

    public string Age { get; set; }

    // In the ViewModel only suppory 'String' property.
    //public DetailInfoModel DetailInfo { get; set; }
}

Finally, you can format the Model class like this:

// Test data here...
var model = new MasterModel();

model.Name       = "John";
model.Birthday   = new DateTime( 1988, 1, 1 );
model.Age        = 16;
model.DetailInfo = new DetailInfoModel() 
{ 
    InfoName = "JJJ", 
    NAVDate  = new DateTime( 2013, 5, 7 ) 
};
model.Details = new List<DetailModel>() 
{
    new DetailModel 
    {
        DetailName       = "IUIU",
        Length          = 3M,
        Pay             = 45673.52434M,
        NavDate         = new DateTime( 2013, 3, 5 ),
        Name            = "Joe",
        MaskStartIndex  = 1,
        MaskLength      = 1,
        Name2           = "Jimmy"
    },
    new DetailModel 
    {
        DetailName      = "Jack",
        Length          = 2M,
        Pay             = 785.5497M,
        NavDate         = new DateTime( 2013, 7, 5 ),
        Name            = "Kindding",
        MaskStartIndex  = 2,
        MaskLength      = 3,
        Name2           = "Ruby"
    }
};

// do the format here...
var viewModelType = typeof( MasterVModel );
var formatter     = new DataFormatter();
var result        = formatter.DoModelDeepFormat( model, viewModelType );

// get the format result here...
MasterModel  resultModel  = (MasterModel)result;
MasterVModel resultVModel = resultModel.ViewModel;

Or you can also use the Dynamic Formatting.

Then, you don't have to define a ViewModel class anymore. But the dynamic formatting is a little slower than using ViewModel formatting.

// Your class will extend the BasicDynamicModel instead of BasicModel
public class MasterModel2 : BasicDynamicModel
// Use dynamic formatting here...
var formatter = new DataFormatter();
object result = formatter.FormatDynamicModel( model );

// Get the dynamic formatting here...
MasterModel2 resultModel  = (MasterModel2)result;
dynamic      resultVModel = resultModel.ViewModel;  // dynamic type
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
8.0.142 193 3/19/2024
8.0.141 186 1/4/2024
8.0.140 139 12/17/2023
6.0.138 157 3/19/2024
6.0.137 184 9/20/2023
6.0.136 178 9/14/2023
6.0.135 163 9/10/2023
6.0.134 206 7/12/2023
6.0.133 215 7/10/2023
6.0.132 212 7/7/2023
6.0.131 215 6/19/2023
6.0.130 179 6/19/2023
6.0.129 578 7/2/2022
6.0.128 597 1/16/2022
6.0.127 575 1/15/2022
6.0.126 576 1/15/2022
6.0.125 380 1/8/2022
6.0.125-hotfix1 261 1/8/2022
6.0.124 389 1/7/2022
6.0.123 520 11/14/2021
5.0.129 617 7/2/2022
5.0.128 581 1/16/2022
5.0.125 409 1/8/2022
5.0.124 376 1/7/2022
5.0.123 577 11/14/2021
5.0.122 600 10/11/2021
5.0.121 615 5/1/2021
3.1.137 163 9/20/2023
3.1.136 159 9/14/2023
3.1.135 163 9/10/2023
3.1.134 215 7/12/2023
3.1.133 207 7/11/2023
3.1.132 201 7/8/2023
3.1.131 250 6/19/2023
3.1.130 400 2/1/2023
3.1.129 580 7/2/2022
3.1.128 573 1/16/2022
3.1.125 402 1/8/2022
3.1.124 411 1/7/2022
3.1.123 583 11/14/2021
3.1.122 532 10/11/2021
3.1.121 508 5/1/2021
2.31.120 539 3/14/2021
2.30.115 589 3/6/2021
2.30.114 512 3/6/2021
2.20.101 491 3/1/2021
2.19.3 529 2/11/2021
2.19.2 565 2/6/2021
2.19.1 617 1/6/2021
2.19.0 568 1/1/2021
2.18.3 705 12/27/2020
2.18.2 672 8/29/2020
2.18.1 712 8/26/2020
2.18.0 725 8/20/2020
2.17.135 648 8/19/2020
2.17.134 766 7/28/2020
2.17.133 751 7/27/2020
2.17.132 768 7/18/2020
2.17.131 689 7/11/2020
2.16.130 775 6/13/2020
2.15.128 699 6/3/2020
2.15.127 760 5/31/2020
2.15.126 783 4/30/2020
2.14.122 697 4/13/2020
2.13.100 720 3/12/2020
2.12.51 678 2/18/2020
2.11.50 1,394 2/10/2020
2.10.44 1,387 1/30/2020
2.9.43 1,509 1/11/2020
2.8.42 1,539 1/10/2020
2.8.41 1,423 1/5/2020
2.7.40 1,416 1/2/2020
2.7.39 1,452 1/2/2020
2.7.38 1,667 1/1/2020
2.6.37 1,419 12/23/2019
2.6.35 1,396 12/4/2019
2.6.1 1,418 12/2/2019
2.6.0 1,432 11/28/2019
2.5.2 1,682 11/26/2019
2.5.1 1,469 11/12/2019
2.5.0 1,492 11/9/2019
2.4.3 955 10/16/2019
2.4.2 959 10/16/2019
2.4.1 1,014 9/20/2019
2.3.113 490 3/6/2021
2.3.112 502 3/6/2021
2.3.28 1,002 9/19/2019
2.3.27 987 8/30/2019
2.3.26 1,186 8/20/2019
2.3.25 1,024 8/12/2019
2.3.22 1,243 7/31/2019
2.3.21 1,010 7/20/2019
2.3.20 1,053 6/22/2019
2.3.19 918 6/14/2019
2.3.18 1,149 6/13/2019
2.3.17 996 6/13/2019
2.3.15 1,086 6/8/2019
2.3.14 1,104 6/8/2019
2.3.13 1,012 5/30/2019
2.3.12 773 5/24/2019
2.3.11 765 5/24/2019
2.3.10 774 5/21/2019
2.3.9 797 5/9/2019
2.3.8 752 5/8/2019
2.3.7 797 4/30/2019
2.3.6 832 4/23/2019
2.3.5 859 4/19/2019
2.3.4 831 4/18/2019
2.3.3 845 4/17/2019
2.3.2 813 4/6/2019
2.3.1 926 12/15/2018
2.3.0 934 12/7/2018
2.2.6 1,001 11/25/2018
2.2.1 957 11/17/2018
2.2.0 938 11/16/2018
2.1.0 931 11/15/2018
2.0.1 927 11/6/2018
2.0.0 1,024 11/4/2018