Skip to content

Commit

Permalink
Add DynamicParametersExtensions
Browse files Browse the repository at this point in the history
  • Loading branch information
Behrad87 committed Oct 15, 2024
1 parent a3804ce commit c55043f
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions Dapper/DynamicParametersExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
using System.Reflection;

namespace Dapper
{
/// <summary>
/// An Extention Class to DynamicParameters
/// </summary>

public static class DynamicParametersExtensions
{
/// <summary>
/// Add Parameter if exists
/// </summary>
/// <param name="dp">Extending DynamicParameter</param>
/// <param name="paramName">Parameter Name</param>
/// <param name="param">Parameter with type of dynamic</param>
public static void AddIfExists(this DynamicParameters dp, string paramName, dynamic? param)
{
if (param is not null)
{
var pStr = param is string;
if (pStr)
{
if (string.IsNullOrEmpty(param))
{
return;
}
}

dp.Add(paramName, param);
}
}

/// <summary>
/// Add members of class as parameter; if the member is not null
/// </summary>
/// <typeparam name="T">Generic Type</typeparam>
/// <param name="dp">Extending DynamicParameters</param>
/// <param name="param"></param>
public static void AddParametersIfExists<T>(this DynamicParameters dp, T param)
{
if (param is not null)
{
foreach (PropertyInfo prop in param.GetType().GetProperties())
{
if (
!prop.Name.ToLower().Contains("monitoringtype")
&& !prop.Name.ToLower().Contains("projecttype")
)
{
AddIfExists(dp, paramName: prop.Name, param: prop.GetValue(param));
}
}
}
}
}
}

0 comments on commit c55043f

Please sign in to comment.