这是我的代码:
bool ch=Type.IsBuiltIn("System.Int32"); // not working-> syntax error
public static class MyExtentions
{
public static bool IsBuiltIn(this Type t, string _type)
{
return (Type.GetType(_type) == null) ? false : true;
}
}
请通过IsBuiltIn新方法
来扩展类型类答案 0 :(得分:6)
您不能拥有静态扩展方法。您的扩展方法适用于Type
类的实例,因此要调用它,您必须执行以下操作:
typeof(Type).IsBuiltIn("System.Int32")
解决方法是将扩展方法放在实用程序类中,例如如下所示,并将其称为普通静态函数:
public static class TypeExt
{
public static bool IsBuiltIn(string _type)
{
return Type.GetType(_type) == null;
}
}
// To call it:
TypeExt.IsBuiltIn("System.Int32")
顺便说一句,我认为这不会告诉你这种类型是否是“内置的”;它只会告诉您具有给定名称的类型是否已加载到流程中。
答案 1 :(得分:3)
扩展方法旨在描述实例上的新API,而不是类型。在您的情况下,该API将类似于:
Type someType = typeof(string); // for example
bool isBuiltIn = someType.IsBuiltIn("Some.Other.Type");
......显然不是你想要的; type
此处不添加任何内容,与IsBuiltIn
无关。基本上没有向现有类型添加新静态方法的编译器技巧 - 因此您将无法使用Type.IsBuiltIn("Some.Other.Type")
。
答案 2 :(得分:0)