当方法需要类型时尝试将Type作为参数传递时出现C#错误

时间:2016-08-06 17:26:50

标签: c# methods types parameters

作为测试用例,我创建了以下非常简单的方法:

public static object TestMethod(Type t)
    {
        return t;
    }

对于我试图通过它的类型,我创建了一个非常基本的类作为测试:

public class TestClass
    {
        public string name { get; set; }
    }

最后我试图正常调用该方法:

TestClass sample = TestMethod(TestClass);

然而,当TestClass作为TestMethod的参数传递时,我收到错误:"' TestClass'是一种类型,在给定的上下文中无效。"

这对我来说没有意义,因为所需的参数是一种类型。

2 个答案:

答案 0 :(得分:2)

要使用您的方法,请按照这样做

TestClass sample = (TestClass)TestMethod(typeof(TestClass));

您的结果将是类型,而不是TestClass,因此您将获得RuntimeException。

在现有实例上使用

TestMethod(testClassInstance.GetType())

但是你想要实现什么目标?

答案 1 :(得分:0)

试试这个:

TestClass sample = (TestClass)TestMethod(typeof(TestClass)); //notice the cast because the method is returning an object

技术债务

上面编译但是会抛出一个无效的强制转换异常:高级专业人员应该告诉你的是你需要更改 这个< / p>

public static object TestMethod(Type t)
{
    return Activator.CreateInstance(t); 
}