如何将变量的类型放在方法参数中,因为某个类是由类变量定义的?例如:
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,就像我可以将一个类的类型存储到一个变量,然后像类类型一样使用这个变量.
是否可以在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如果你真的想要,可能会对执行时间进行检查.
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |