从Type的变量中声明参数的类型?

Car*_*ven 2 c#

如何将变量的类型放在方法参数中,因为某个类是由类变量定义的?例如:

class MyClass {
   private Type _type;

   public MyClass(Type type) {
      _type = type;
   }

   public void SomeMethod(_type param) { //... }
   public _type OtherMethod() {}

}
Run Code Online (Sandbox Code Playgroud)

因此,我的想法是,我可以将动态类型设置为类中的变量,并将该Type变量用作其他对象的类型.

是否可以在C#中执行此操作?

编辑:

我决定让我的问题更清楚,并解释我为什么要求这样的功能.我试过Generics.然而,泛型的问题是,每次我引用该类的对象时,我必须声明类的类型,如:MyClass<TSomeType> param

在我的场景中,我有一个List<MyClass> dataList包含MyClass.如果我在MyClass上有一个泛型,那么dataList必须是List<MyClass<TSomeType>>.在这种情况下,我被卡住了,因为列表只能包含MyClass<TSomeType>.一旦我宣布了全班的类型,我就不能拥有其他类型的类型.这就是为什么我想知道是否有一种更传统的方式来声明一个Type,就像我可以将一个类的类型存储到一个变量,然后像类类型一样使用这个变量.

Jon*_*eet 5

是否可以在C#中执行此操作?

不.编译器会做MyClass什么?它无法知道方法调用是否有效.

可以使用泛型来代替:

class MyClass<T>
{
    public void SomeMethod(T param) { ... }
    public T OtherMethod() { ... }
}
Run Code Online (Sandbox Code Playgroud)

此时,当编译器看到MyClass<string>它知道它SomeMethod("foo")是有效的,但SomeMethod(10)不是.

如果你真的不知道类型直到执行时间,那么你可能只是使用object:

class MyClass
{
    public void SomeMethod(object param) { ... }
    public object OtherMethod() { ... }
}
Run Code Online (Sandbox Code Playgroud)

...并且Type如果你真的想要,可能会对执行时间进行检查.