我有一个方法用于更新数据库中的记录,它接受一些参数。这个方法在开始时调用另一种方法,根据传入的ID,通过不同的调用获取有关记录的更多信息。
我想要做的是(请看下面)调用UpdateTheRecord
方法时,有第二个方法CheckValueOrElseGetProperty
允许我传入一个对象返回类型(如字符串) ,int,等等),一个对象参数(如果满足if条件,则查找属性值,例如string.IsNullOrEmpty
),以及用于指定属性的lambda表达式。
在CheckValueOrElseGetProperty
我可以使用typeof(T)
来获取类型并执行检查。但我不确定如何使用三种泛型类型调用方法,以及如何指定属性选择表达式。
因此,为简洁起见,我们假设您有以下方法:
public static void UpdateTheRecord(Guid id) {
MyObjectType myObject = GetFurtherInformation(id);
// call generic method to check "property",
// pass in type to do checks, pass in MyObjectType and
// with a FUNC specify the property to use if the if condition is met
}
这是我遇到问题的地方:
public static T CheckValueOrElseGetProperty<T, TProperty, TReturnType> (Func<T, TProperty> propertySelector) {
if (typeof(T) is string) {
// pseudo code
if (string.IsNullOrEmpty(T)
}
}