C# 删除 typeof,而是只将类名传递到函数中
本文关键字:函数 typeof 删除 | 更新日期: 2023-09-27 18:31:55
在我的代码库中,我有一个函数,它接受一个对象及其类型。
第二个参数用于执行该对象类型的验证。为了传递类型,我有很多像这样的typeof(..)调用:
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))
您可以使用泛型:
public static bool Is_Valid<T>(object obj)
{
return obj is T;
}
然后这样调用
Is_Valid<YourType>(request_obj);
您可以使用泛型。
public static bool Is_Valid<T>(T objectUnderValidation) {
//Your code
}
if (Is_Valid(request_obj))
如果你想清理
你的代码,你可以创建一个扩展方法并做这样的事情。
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));
-或-
request_obj.IsValid<User_ID>();
但是,如果这是您要询问的,则无法消除类型关键字。 当然,除非该方法正在执行某些操作,否则您可以派生该类型并一起消除 Type 输入参数。