last ...
This commit is contained in:
@@ -116,17 +116,19 @@ namespace xCommons.Extensions
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="source"></param>
|
||||
/// <param name="property"></param>
|
||||
/// <param name="bindingAttr"></param>
|
||||
/// <returns></returns>
|
||||
public static bool HasProperty<T>(
|
||||
this T source,
|
||||
string property
|
||||
string property,
|
||||
BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
|
||||
)
|
||||
where T : class
|
||||
{
|
||||
//
|
||||
var result = source
|
||||
.GetType()
|
||||
.GetProperties()
|
||||
.GetProperties(bindingAttr)
|
||||
.Any(prop => prop.Name == property); ;
|
||||
|
||||
//
|
||||
@@ -134,23 +136,25 @@ namespace xCommons.Extensions
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check a Class is Contains a Filed or not ...
|
||||
/// Check a Class is Contains a field or not ...
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="source"></param>
|
||||
/// <param name="filed"></param>
|
||||
/// <param name="field"></param>
|
||||
/// <param name="bindingAttr"></param>
|
||||
/// <returns></returns>
|
||||
public static bool HasField<T>(
|
||||
this T source,
|
||||
string filed
|
||||
string field,
|
||||
BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
|
||||
)
|
||||
where T : class
|
||||
{
|
||||
//
|
||||
var result = source
|
||||
.GetType()
|
||||
.GetFields()
|
||||
.Any(fld => fld.Name == filed);
|
||||
.GetFields(bindingAttr)
|
||||
.Any(fld => fld.Name == field);
|
||||
|
||||
//
|
||||
return result;
|
||||
@@ -162,17 +166,19 @@ namespace xCommons.Extensions
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="source"></param>
|
||||
/// <param name="method"></param>
|
||||
/// <param name="bindingAttr"></param>
|
||||
/// <returns></returns>
|
||||
public static bool HasMethod<T>(
|
||||
this T source,
|
||||
string method
|
||||
string method,
|
||||
BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
|
||||
)
|
||||
where T : class
|
||||
{
|
||||
//
|
||||
var result = source
|
||||
.GetType()
|
||||
.GetMethods()
|
||||
.GetMethods(bindingAttr)
|
||||
.Any(mthd => mthd.Name == method);
|
||||
|
||||
//
|
||||
@@ -209,7 +215,7 @@ namespace xCommons.Extensions
|
||||
/// <param name="source"></param>
|
||||
/// <param name="bindingAttr"></param>
|
||||
/// <returns></returns>
|
||||
public static string[] GetFiledsNames<T>(
|
||||
public static string[] GetFieldsNames<T>(
|
||||
this T source,
|
||||
BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
|
||||
)
|
||||
@@ -278,15 +284,17 @@ namespace xCommons.Extensions
|
||||
/// <typeparam name="TProp"></typeparam>
|
||||
/// <param name="source"></param>
|
||||
/// <param name="property"></param>
|
||||
/// <param name="bindingAttr"></param>
|
||||
/// <returns></returns>
|
||||
public static TProp GetProperty<T, TProp>(
|
||||
this T source,
|
||||
string property
|
||||
string property,
|
||||
BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
|
||||
)
|
||||
where T : class
|
||||
{
|
||||
//
|
||||
TProp result = default(TProp);
|
||||
TProp result = default;
|
||||
|
||||
//
|
||||
// Check if T Has Property ...
|
||||
@@ -296,7 +304,10 @@ namespace xCommons.Extensions
|
||||
// Access Property ...
|
||||
var prop = source
|
||||
.GetType()
|
||||
.GetProperty(property);
|
||||
.GetProperty(
|
||||
property,
|
||||
bindingAttr
|
||||
);
|
||||
|
||||
//
|
||||
// Retrieve Property Value as Object ...
|
||||
@@ -316,11 +327,13 @@ namespace xCommons.Extensions
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <typeparam name="TField"></typeparam>
|
||||
/// <param name="source"></param>
|
||||
/// <param name="filed"></param>
|
||||
/// <param name="field"></param>
|
||||
/// <param name="bindingAttr"></param>
|
||||
/// <returns></returns>
|
||||
public static TField GetField<T, TField>(
|
||||
this T source,
|
||||
string filed
|
||||
string field,
|
||||
BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
|
||||
)
|
||||
where T : class
|
||||
{
|
||||
@@ -328,12 +341,15 @@ namespace xCommons.Extensions
|
||||
TField result = default;
|
||||
|
||||
//
|
||||
if (source.HasField(filed))
|
||||
if (source.HasField(field))
|
||||
{
|
||||
//
|
||||
var fld = source
|
||||
.GetType()
|
||||
.GetField(filed);
|
||||
.GetField(
|
||||
field,
|
||||
bindingAttr
|
||||
);
|
||||
|
||||
//
|
||||
var fieldVal = fld.GetValue(source);
|
||||
@@ -352,11 +368,13 @@ namespace xCommons.Extensions
|
||||
/// <param name="source"></param>
|
||||
/// <param name="property"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="bindingAttr"></param>
|
||||
/// <returns></returns>
|
||||
public static bool SetProperty<T, TProp>(
|
||||
this T source,
|
||||
string property,
|
||||
TProp value
|
||||
TProp value,
|
||||
BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
|
||||
)
|
||||
where T : class
|
||||
{
|
||||
@@ -372,7 +390,10 @@ namespace xCommons.Extensions
|
||||
// Access Property ...
|
||||
var prop = source
|
||||
.GetType()
|
||||
.GetProperty(property);
|
||||
.GetProperty(
|
||||
property,
|
||||
bindingAttr
|
||||
);
|
||||
|
||||
//
|
||||
// Set Property ...
|
||||
@@ -397,19 +418,21 @@ namespace xCommons.Extensions
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <typeparam name="TField"></typeparam>
|
||||
/// <param name="source"></param>
|
||||
/// <param name="filed"></param>
|
||||
/// <param name="field"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="bindingAttr"></param>
|
||||
/// <returns></returns>
|
||||
public static bool SetField<T, TField>(
|
||||
this T source,
|
||||
string filed,
|
||||
TField value
|
||||
string field,
|
||||
TField value,
|
||||
BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
|
||||
)
|
||||
where T : class
|
||||
{
|
||||
//
|
||||
// Check T Has Field ...
|
||||
var result = source.HasField(filed);
|
||||
var result = source.HasField(field);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
@@ -419,7 +442,10 @@ namespace xCommons.Extensions
|
||||
// Access Field ...
|
||||
var fld = source
|
||||
.GetType()
|
||||
.GetField(filed);
|
||||
.GetField(
|
||||
field,
|
||||
bindingAttr
|
||||
);
|
||||
|
||||
//
|
||||
// Set Value ...
|
||||
|
||||
Reference in New Issue
Block a user