initializecomponent() не существует в текущем контексте при использовании обобщений в веб-приложении C#

Я пытаюсь создать дженерики в C# веб-приложении и использую silverlight-5. Это я уже реализовал в консольном приложении C#.

Я пытаюсь сделать то же самое в веб-разработке с использованием asp.net, C# и silverlight (и GUI с использованием xaml) в Vs-2010. Чей GUI отображается в Internet Explorer при запуске кода (по событиям нажатия кнопки).

В консольном приложении я делаю это с помощью следующего кода: (Код должен прочитать двоичный файл как единственный аргумент в консольном приложении и прочитать символ в этом файле, эти symbol может быть int32/int16/int64/UInt32 так далее.). Так что надо сделать это Symbol переменная как "общая" (<T>). И в консольном приложении этот код работает нормально.

    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;



    namespace check 
    {
LINE:1  public class Huffman < T > where T: struct,IComparable < T >,IEquatable < T > 
        {
            public int data_size, length, i, is_there;
            public class Node 
            {
                public Node next;
line:2          public T symbol; // This symbol is of generic type.
                public int freq;
             }
            public Node front, rear;
LINE:3         public Huffman(string[] args, Func < byte[], int, T > converter) 
            {
                front = null;
                rear = null;
                int size = Marshal.SizeOf(typeof (T));
                using(var stream = new BinaryReader(System.IO.File.OpenRead(args[0]))) 
                {
                    long length = stream.BaseStream.Length;
                    for (long position = 0; position + size < length; position += size)
                    {
                        byte[] bytes = stream.ReadBytes(size);
LINE:4                  T processingValue = converter(bytes, 0); //**Here I read that symbol and store in processing value which is of type <T>** 
                        //Then  further i use this processingValue and "next" varible(which is on Node type)
                    }
                }
            }
        }

        public class MyClass
        {
            public static void Main(string[] args)
            {
    line:5            Huffman < long > ObjSym = new Huffman < long > (args, BitConverter.ToInt64); 
                    // It could be "ToInt32"/"ToInt16"/"UInt16"/"UInt32"/"UInt64" with respective 
                    //change in <int>/<short> etc.



                //Then i further use this ObjSym object to call function(Like Print_tree() here and there are many more function calls)   
                ObjSym.Print_tree(ObjSym.front);
            }
        }
    }

То же самое я должен достичь в C# silverlight(веб-приложение) с той разницей, что я уже загрузил и сохранил файл нажатием кнопки (просматривая его)(тогда как я загружал / читал файл как единственный аргумент в консольном приложении), Эта часть загрузки файла, которую я уже сделал.

Теперь проблема в том, как сделать эту переменную "символ" универсальной ( <T> ) здесь, потому что я не могу увидеть создание объектов (в методе main(string[] args)), где я мог бы передать параметр BitConverter.ToInt32/64/16 (как я делаю в консольном приложении, см. код).

ПРИМЕЧАНИЕ: пожалуйста, обратите внимание, что я использовал в LINE 1,2,3,4,5 в своем коде (так что то же самое (или другое, если у вас есть другой подход) должно быть достигнуто в коде ниже, чтобы сделать "символ" из тип)

Потому что в C# я получаю тело кода, как это

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace check
{
    public partial class MainPage : UserControl
    {
         public class Node
        {
            public Node next;
            public long symbol;   // This symbol is of generic type.
            public int freq;
        }
        public Node front, rear;

       public MainPage()
        {
            InitializeComponent();
        }

    }
}

Может кто-нибудь, пожалуйста, помогите мне изменить код этого веб-приложения точно так же, как код этого консольного приложения (я имею в виду создание " Symbol variable as generic (<T>) ")

РЕДАКТИРОВАТЬ: Когда я делаю это:

(1) public partial class MainPage <T> : UserControl, IComparable < T > where T: struct,IEquatable < T > 
(2) public T symbol; (In Node class)
(3) And all the buttons and boxes i created are given not existing in current context.

тогда это дает ошибку

Error :The name 'InitializeComponent' does not exist in the current context 

Может ли кто-нибудь помочь мне в достижении того же в веб-приложении C# silverlight? Было бы большой помощью, спасибо.

2 ответа

Решение

Вот пример.

    namespace check
    {    
       public partial class MainPage : UserControl
       {
            public MainPage()
            {
                InitializeComponent();
                // Use the generic type Test with an int type parameter.
                Test<int> Test1 = new Test<int>(5);
                // Call the Write method.
                Test1.Write();

                // Use the generic type Test with a string type parameter.
                Test<string> Test2 = new Test<string>("cat");
                Test2.Write();
            }
       }

       class Test<T>
       {
           T _value;    
           public Test(T t)
           {
              // The field has the same type as the parameter.
              this._value = t;
           }    
           public void Write()
           {
              MessageBox.Show(this._value);
           }
       }
   }

Я думаю, что вы спрашиваете такого рода пример.

Вы можете использовать универсальный, как если бы вы не использовали XAML. Но если вы хотите использовать XAML для определения вашего элемента управления, вы не можете использовать generic. Вот почему проблема возникает.

Создайте другой класс и используйте его. Я думаю, что это поможет вам.

Другие вопросы по тегам