2013-10-09 5 views
1

Я новичок в .net и C#, и я пытаюсь создать экземпляр MyStruct, не знакомый с типом раньше. поэтому мой класс получает 3 типа в конструкторе, и мне нужно создать экземпляр MyStruct с этим типом. Я посмотрел в интернете и увидел последнюю часть, но я не могу ее скомпилировать.Создать динамическую структуру с общим типом

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); 
     } 
    } 
} 

Я просто хочу что-то вроде

Mystructure = new MyStruct<a,b,c> // this doesn't compile too 

TYPEOF (MyStruct <>) делают ошибки компиляции, как

Erreur Using the generic type 'IQUnionTag.IQUnionTag.MyStruct<A,B,C>' requires 3 type arguments 

я, конечно, пропустил что-то, вы можете помочь мне создать свой экземпляр?

ответ

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); 
    } 
} 
+0

Спасибо, это работа Прекрасно сейчас – Lumy

Смежные вопросы