Передача DTO из отдельного проекта в сервисы RIA WCF Layer UF - PullRequest
0 голосов
/ 16 августа 2010

У меня есть решение, которое я разработал с 5 слоями.

Это:

  • Пользовательский интерфейс / Уровень представления
  • Уровень обслуживания
  • Уровень бизнес-логики
  • Уровень доступа к данным
  • DTO / Общий уровень (IQUTECHDTO)

Я хочу передать DTO пользовательскому интерфейсу. Ниже находится сервисный уровень, который предоставляет метод GetVendors, который я хочу вернуть VendorDTO. Этот объект будет заполнен раскрывающимся списком.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.ServiceModel.DomainServices.Hosting;
using System.ServiceModel.DomainServices.Server;
using IQUTechDTO;
using IQUTECHDAL;

namespace BusinessApplication6.Web.Services
{

    public class Foos
    {

        [Key]

        public int FooId { get; set; }

        public string Name { get; set; }

    }

    // TODO: Create methods containing your application logic.
    [EnableClientAccess()]
    public class BillService : DomainService
    {

        public IEnumerable<Foos> GetFoos()
        {
            return new List<Foos> { new Foos { FooId = 42, Name = "Fred" } };
        }

        [Query]
        public IEnumerable<VendorDTO> GetVendors()
        {
            return new List<VendorDTO> { new VendorDTO { VendorID = 42 } };  
        }

    }
}

В файле UI .cs, когда я пытаюсь создать объект типа VendorDTO, я не могу. Однако я смог получить доступ к объекту Foo из пользовательского интерфейса.

VendorDTO был помечен как serialazble, но, тем не менее, он находится в отдельном проекте (IQUTECHDTO)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.ServiceModel.DomainServices;
using System.ServiceModel.Web;


namespace IQUTechDTO
{
    public enum LoadStatus
    {
     Initialized = 0,
     Ghost = 1,
     Loaded = 2
    }

    [Serializable]
    public class VendorDTO
    {
        /// <summary>
        ///DTO for the 'Vendor' object.
        /// </summary>

        public VendorDTO()
        {
            this.loadStatus = LoadStatus.Initialized;
        }

        ///<summary>
        /// Copy constructor
        ///</summary>
        public VendorDTO(VendorDTO sourceDTO)
        {
            loadStatus = sourceDTO.loadStatus;
            VendorID = sourceDTO.VendorID;
            VendorName = sourceDTO.VendorName;
            VendorAddress1 = sourceDTO.VendorAddress1;
            VendorAddress2 = sourceDTO.VendorAddress2;
            VendorCity = sourceDTO.VendorCity;
            VendorState = sourceDTO.VendorState;
            VendorEmail = sourceDTO.VendorEmail;
            VendorPhone = sourceDTO.VendorPhone;
            VendorPOC = sourceDTO.VendorPOC;
            VendorRegion = sourceDTO.VendorRegion;
        }

        public LoadStatus loadStatus;

        [Key]
        public int VendorID { get; set; }
        public string VendorName;
        private string VendorAddress1;
        private string VendorAddress2;
        private string VendorEmail;
        private string VendorPhone;
        private string VendorCity;
        private string VendorState;
        private string VendorPOC;
        private string VendorRegion;

    }
}

Ниже приведен класс пользовательского интерфейса

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;
using BusinessApplication6.Web.Services;
using System.ServiceModel.DomainServices.Client;
using BusinessApplication6.Web;


namespace BusinessApplication6.Views.BOM
{
    public partial class BOMCRUD : Page
    {
        public BOMCRUD()
        {
            InitializeComponent();
            LoadTree();


        }

        public void LoadTree()
        {
            BillContext newCon = new BillContext();


            //This works
            Foos fooobj = new Foos();

            //This doesnt work
            VendorDTO vendorobj = new VendorDTO();

        }



        // Executes when the user navigates to this page.
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }



    }
}

Почему это не позволит мне получить доступ к этому объекту.

Ваша помощь будет принята с благодарностью.

С уважением, Том

1 Ответ

0 голосов
/ 16 августа 2010

Класс пользовательского интерфейса не имеет ссылки на IQUTECHDTO, как класс FoosBusinessApplication6.Web).

...