C# 使用泛型类型创建动态结构
我是.net和C#的新手,我正在尝试创建MyStruct的一个实例,之前不知道它的类型。 因此,我的类在构造函数中接收3个类型,我需要创建一个具有此类型的MyStruct实例。 我在网上看到了最后一部分,但我不能编译这个C# 使用泛型类型创建动态结构,c#,.net,generics,C#,.net,Generics,我是.net和C#的新手,我正在尝试创建MyStruct的一个实例,之前不知道它的类型。 因此,我的类在构造函数中接收3个类型,我需要创建一个具有此类型的MyStruct实例。 我在网上看到了最后一部分,但我不能编译这个 namespace IQUnionTag { public class IQUnionTag { private struct MyStruct<A, B, C> { public A valu
namespace IQUnionTag
{
public class IQUnionTag
{
private struct MyStruct<A, B, C>
{
public A value1;
public B value2;
public C value3;
}
private object MyStructure;
private Type a;
private Type b;
private Type c;
public IQUnionTag(Type a, Type b, Type c)
{
this.a = a;
this.b = b;
this.c = c;
int d = 2;
var d1 = typeof (MyStruct<>); // Doesn't compile
Type[] typeArgs = { a, b, c };
var makeme = d1.MakeGenericType(typeArgs);
object o = Activator.CreateInstance(makeme);
Console.WriteLine(o);
}
}
}
名称空间iquinontag
{
公营伊克宁塔格酒店
{
私有结构MyStruct
{
公共价值1;
公共价值2;
公共价值3;
}
私有对象结构;
私人a型;
b类私家车;
私有c型;
公共iquiniontag(a类、b类、c类)
{
这个a=a;
这个.b=b;
这个.c=c;
int d=2;
var d1=typeof(MyStruct);//不编译
类型[]typeArgs={a,b,c};
var makeme=d1.MakeGenericType(typeArgs);
对象o=Activator.CreateInstance(makeme);
控制台写入线(o);
}
}
}
我只想要像这样的东西
Mystructure = new MyStruct<a,b,c> // this doesn't compile too
Mystructure=newmystruct//这也不能编译
typeof(MyStruct)使错误编译为
Erreur Using the generic type 'IQUnionTag.IQUnionTag.MyStruct<A,B,C>' requires 3 type arguments
Erreur使用泛型类型'iqniontag.iqniontag.MyStruct'需要3个类型参数
我肯定错过了一些东西,你能帮我创建我的实例吗?不清楚你的目的是什么,但你可以做:
public class IQUnionTag
{
private struct MyStruct<A, B, C>
{
public A value1;
public B value2;
public C value3;
}
private object MyStructure;
private Type a;
private Type b;
private Type c;
public IQUnionTag(Type a, Type b, Type c)
{
this.a = a;
this.b = b;
this.c = c;
int d = 2;
var d1 = typeof(MyStruct<,,>); // this is the way to get type of MyStruct
Type[] typeArgs = { a, b, c };
var makeme = d1.MakeGenericType(typeArgs);
object o = Activator.CreateInstance(makeme);
Console.WriteLine(o);
}
}
公共类iquinontag
{
私有结构MyStruct
{
公共价值1;
公共价值2;
公共价值3;
}
私有对象结构;
私人a型;
b类私家车;
私有c型;
公共iquiniontag(a类、b类、c类)
{
这个a=a;
这个.b=b;
这个.c=c;
int d=2;
var d1=typeof(MyStruct);//这是获取MyStruct类型的方法
类型[]typeArgs={a,b,c};
var makeme=d1.MakeGenericType(typeArgs);
对象o=Activator.CreateInstance(makeme);
控制台写入线(o);
}
}