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