У меня есть сеточное представление в клиентском приложении удаленного взаимодействия, и мне нужно заполнить его результатом запроса remoting linq, который находится в приложении удаленного сервера.
Я использую .net remoting с веб-формойклиентское приложение, интерфейсный класс в качестве разделяемой библиотеки, консольное приложение в качестве сервера имеет linq to sql database (StudentsDB
).
Я попытался определить метод массива в интерфейсе и внедрить его на сервере.Но я всегда получаю сообщение об ошибке, что Interface.array не может быть преобразован или преобразован в server.array
Класс совместно используемой библиотеки
public interface IMyRemoteStudent
{
Array getAllStudents();
}
Сервер
namespace Server
{
public class RemoteStudent : MarshalByRefObject, IMyRemoteStudent
{
public RemoteStudent()
{
}
public Array getAllStudents()
{
var ctx = new LinqDataContext();
var std = (from ss in ctx.Students
select ss).ToArray();
return std;
}
}
class Program
{
static void Main(string[] args)
{
HttpChannel chnl = new HttpChannel(1234);
ChannelServices.RegisterChannel(chnl, false);
RemoteStudent Obj = new RemoteStudent();
RemotingServices.Marshal(Obj, "MyRemote.soap");
}
}
}
Клиент
protected void btn_Add_Click(object sender, EventArgs e)
{
HttpChannel chnl = new HttpChannel();
ChannelServices.RegisterChannel(chnl, false);
IMyRemoteStudent ST = (IMyRemoteStudent)Activator.GetObject(typeof(IMyRemoteStudent),
"http://localhost:1234/MyRemote.soap");
Array arr = ST.getAllStudents()
gridview.datasource = arr;
}
Все ответы в Интернете помогают совместно использовать один объект ученика, но мне нужно получить всех учеников как list<>
или как array[]
, или как любой тип объекта