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