如何声明一个在tuntime中获得type的类型,比如Tuple
本文关键字:type 类型 比如 Tuple 声明 何声明 一个 tuntime | 更新日期: 2023-09-27 18:12:11
请考虑Tuple
声明:
public static class Tuple
{
public static Tuple<T1> Create<T1>(T1 item1);
public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2);
public static Tuple<T1, T2, T3> Create<T1, T2, T3>(T1 item1, T2 item2, T3 item3);
....
我们可以这样声明一个Tuple
变量:
Tuple<Mycls> a = new Tuple<Mycls>(new Mycls());
现在我想声明我的类型像Tuple
,可以在运行时获得类型(类)。我这样写:
public static class Nime
{
public static Nime<T1> Create<T1>(T1 item1);
}
但是我得到了这个错误:
非泛型类型'Nime'不能与类型参数一起使用
如何声明像Tuple
这样的类在运行时获得类型
谢谢
我想我知道你想模仿什么
您需要以下内容:
class Nime<T> { ... }
static class Nime
{
public static Nime<T> Create<T>(T t) { return new Nime<T> { ... } }
}
注:Nime
和Nime<T>
是不同的类型。前者是'factory'类。
用法:
var n = Nime.Create("foo"); // var is Nime<string>
可以这样做:
public class Nime<T1>
{
public static Nime<T1> Create(T1 item1)
{
return new Nime<T1>(item1);
}
public T1 Item { get; set; }
private Nime(T1 item)
{
Item = item;
}
}
你可以这样使用它:
var n = Nime<string>.Create("foo");
Console.WriteLine(n.Item);
输出当然是"foo"