现在,我找到问题的所在了,是Type.GetType()出错了
找不到东西
我有一个Test类,如果,Server跟Test在一起,就没有问题
可以直接用
Type MyTypea = Type.GetType("myTest.Test");
Object obj=Activator.CreateInstance(MyTypea);
MethodInfo myAdd = MyTypea.GetMethod("add");
Console.Write("\nSecond method - " + MyTypea.FullName +" returns " + myAdd.Invoke(obj, aa));来找到myTest.Test,现在是,如果我Server提出来,编译成dll,那么他就找不到了
Type MyTypea = Type.GetType("myTest.Test"); 返回为空。
这是怎么回事??
找不到东西
我有一个Test类,如果,Server跟Test在一起,就没有问题
可以直接用
Type MyTypea = Type.GetType("myTest.Test");
Object obj=Activator.CreateInstance(MyTypea);
MethodInfo myAdd = MyTypea.GetMethod("add");
Console.Write("\nSecond method - " + MyTypea.FullName +" returns " + myAdd.Invoke(obj, aa));来找到myTest.Test,现在是,如果我Server提出来,编译成dll,那么他就找不到了
Type MyTypea = Type.GetType("myTest.Test"); 返回为空。
这是怎么回事??
需要注意的是,前面我们讲到了命名空间和装配件的关系,要查找一个类,必须指定它所在的装配件,或者在已经获得的Assembly实例上面调用GetType。
本装配件中类型可以只写类型名称,另一个例外是mscorlib.dll,这个装配件中声明的类型也可以省略装配件名称(.Net装配件编译的时候,默认都引用了mscorlib.dll,除非在编译的时候明确指定不引用它),比如:
System.String是在mscorlib.dll中声明的,上面的Type t = Type.GetType(“System.String”)是正确的
System.Data.DataTable是在System.Data.dll中声明的,那么:
Type.GetType(“System.Data.DataTable”)就只能得到空引用。
必须:
Type t = Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
Type MyTypea = ass.GetType("myTest.Test");
FileInfo file=new FileInfo(Path.Combine(Application.StartupPath,"myTest.dll"));
if(file.Exists)
{
try
{
Assembly ass=Assembly.LoadFrom(file.FullName);
Type MyTypea = ass.GetType(className);
Object obj=Activator.CreateInstance(MyTypea,classPara); MethodInfo myAdd = MyTypea.GetMethod(methodName);
myAdd.Invoke(obj, methodPara).ToString();
}
catch(Exception e)
{
//
}
}
已经解决上面的问题了。
------------------------------------------------------------------------------
现在又遇到一个问题:
我在客户端Client用一个循环向Server发数据,一个循环50次,第一次通信,能够全部发过去,
连接没有断开的,我继续点发送,结果第二次只能发送3-5条数据过去,
如果不用dll,而是用cs的话,每次都能发过去,这又是什么回事??
谢谢