在我的代码库中,我有一个接受对象及其类型的函数。
第二个参数用于执行该对象类型的验证。要传递类型,我有很多类型的(..)调用:
if(Is_Valid(request_obj,typeof(User_ID)))
我的Is_Valid函数目前声明如下:
public static bool Is_Valid(object objectUnderValidation, Type objectType)
如何修改Is_Valid函数以调用其中的typeof并只调用这样的函数:
if(Is_Valid(request_obj,User_ID))
答案 0 :(得分:3)
您可以使用泛型:
public static bool Is_Valid<T>(object obj)
{
return obj is T;
}
然后这样打电话
Is_Valid<YourType>(request_obj);
答案 1 :(得分:3)
您可以使用generics。
public static bool Is_Valid<T>(T objectUnderValidation) {
//Your code
}
if (Is_Valid(request_obj))
答案 2 :(得分:0)
如果您希望清理代码,可以创建一个扩展方法并执行类似的操作。
public static class ValidationExtensions
{
public static bool IsValid(this object obj, Type type)
{
// Run your logic here.
return true; // return Answer();
}
public static bool IsValid<T>(this object obj)
{
// Run your logic here.
var type = typeof(T);
return true; // return Answer();
}
}
现在您的代码将显示为:
request_obj.IsValid(typeof(User_ID));
-OR -
request_obj.IsValid<User_ID>();
但如果这就是你要问的话,你就无法消除typeof关键字。当然,除非该方法正在执行某些操作,否则您可以获取该类型并一起消除Type输入参数。