我已经花了几个小时坐在代码上,我什么都不想。累。
我有一个班级:
class ConnectionThread
{
public TcpListener threadListener;
public ConnectionThread(TcpListener lis)
{
threadListener = lis;
ThreadPool.QueueUserWorkItem(new WaitCallback(HandleConnection));
}
public void HandleConnection(object state)
{
TcpClient client = threadListener.AcceptTcpClient();
Byte[] bytes = new Byte[25600000];
String data = null;
NetworkStream stream = client.GetStream();
int i;
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
{
// I WANT INCLUDE HERE CODE OUT OF CLASS!!!
}
stream.Close();
client.Close();
}
}
如果我的班级在附加文件中,如何在循环中包含代码的更好方法? 例如,在while:
中包含此内容 data = System.Text.Encoding.Default.GetString(bytes, 0, i);
MessageBox.Show("Received: " + data);
data = data.ToUpper();
byte[] msg = System.Text.Encoding.Default.GetBytes(data);
stream.Write(msg, 0, msg.Length);
MessageBox.Show("Sent: " + data);
答案 0 :(得分:2)
答案 1 :(得分:0)
您不能包含外部文件,例如C ++。
您有部分类和部分方法,但不能直接包含代码段。
您可以将代码包装在静态方法中,然后将适当的值作为参数传递。如果您使用[AggressiveInlining]
属性,则应该内联代码,您可以获得代码包含的效果。
对于你想做的事情,我认为只有复制粘贴才有效。
答案 2 :(得分:0)
使用依赖注入..比如创建一个接口或抽象类来声明方法签名。在另一个类中实现此接口之后。在你最终得到像
之类的东西之后 public interface IMyInterface
{
String DoSomething();
}
class B:IMyInterface
{
public String DoSomething()
{
return "11111";
}
}
class A{
private IMyInterface b;
public A(IMyInterface b)
{
b = this.b;
}
public String DoSomething2()
{
return b.DoSomething();
}
}
在主..
A a = new A(new B());
a.DoSomething2();
因此,您可以传递实现接口或抽象类的类,而不是b。 因此,真实的逻辑被注入并且可以很容易地被替换。它超出了你的班级!