2 klasy i ArrayContainer

0

Pewnie to jakiś banał, ale nie mogę sobie poradzić. Mam Form1.cs:

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace HTTP_Fuzzer
{
    public partial class Form1 : Form
    {
        ArrayList Requests;
        public Form1()
        {
            InitializeComponent();
            Requests = new ArrayList();
            Requests.Add(new HTTPFuzzerRequest());
        }
[...]
        private void sendToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Requests[(int)(this.numericRequestID.Value-1)].Send();
        }
[...]

I mam klasę w osobnym pliku HTTPFuzzerRequest.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

namespace HTTP_Fuzzer
{
    class HTTPFuzzerRequest
    {
[...]
      public HTTPFuzzerResponse Send()
        {
            if(socket== null)
            {
                socket = new TcpClient(pFullUri, 80);
                Stream Data = socket.GetStream();
                //TODO
                
            }
            return new HTTPFuzzerResponse(Data); 
        }
[...]

Na formie mam NumericUpDown o nazwie numericRequestID i przycisk Send, chce żeby po jego kliknięciu wywołać metodę Send tej instancji HTTPFuzzerRequest która jest aktualnie ustawiona w numericRequestID. jednak dostaję:

Error	1	'object' does not contain a definition for 'Send' and no extension method 'Send' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)	F:\Moje dokumenty\Visual Studio 2008\Projects\HTTP Fuzzer1\HTTP Fuzzer1\Form1.cs	47	65	HTTP Fuzzer1

Czyli nie mogę uzyskać dostępu do obiektu pomimo że metoda Send jest publiczna a jak zmienie tą linijkę na

MessageBox.Show(this.Requests[(int)(this.numericRequestID.Value-1)].GetType().ToString());

to zwraca poprawnie: Http_Fuzzer.HttpFuzzerRequest

0

OK. Porawdziłem sobie, trzeba było rzutować w ten sposób:

((HTTPFuzzerRequest)this.Requests[(int)(this.numericRequestID.Value-1)]).Send();

Przy okazji, jest jakaś odpowiedniejsza struktura do tego? Przechowująca instancje tylko jednej klasy, ale pozwalająca na dynamiczne dołączenie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1