请考虑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);
}
但是我收到了这个错误:
非通用类型&#39; Nime&#39;不能与类型参数一起使用
如何声明类似Tuple
的类在运行时获取类型。
感谢
答案 0 :(得分:2)
这样的事情会起作用:
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”。
答案 1 :(得分:2)
我想我知道你要模仿的是什么
您需要以下内容:
class Nime<T> { ... }
static class Nime
{
public static Nime<T> Create<T>(T t) { return new Nime<T> { ... } }
}
注意:Nime
和Nime<T>
是不同的类型。前者是“工厂”级。
用法:
var n = Nime.Create("foo"); // var is Nime<string>