首页 > 解决方案 > 如何在 .NET 的接口中复制类的功能?

问题描述

我是一名软件工程专业的学生,​​我们有一个名为分布式计算的模块。他们在教程中使用 .NET,在其中一个教程中,他们要求我们创建一个名为 BusinessServerInterface 的接口,该接口复制数据层的所有功能,然后创建一个名为 BusinessServer 的类,该类为每个函数创建一个 ChannelFactory 并调用数据层所需的功能。我对如何实现这一点感到困惑,有人可以帮我吗?我已经在数据层和下面的 DataServerInterface 中包含了所有类:

//Database class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;

namespace DC_tutorial_1
{
    public class DatabaseClass
    {
        //creating a singleton object for the database
        public static DatabaseClass Instance { get; } = new DatabaseClass();
        static DatabaseClass() { }

        List<DataStruct> dataStruct = new List<DataStruct>();
        
        public DatabaseClass()
        {

            var generator = new DataGen();

            for (int i = 0; i < generator.GetNoOfAccts(); i++)
            {
                //doubt
                var temp = new DataStruct();
                generator.GetNextAccount(out temp.pin, out temp.acctNo, out temp.firstName, out temp.lastName, out temp.balance);
                dataStruct.Add(temp);
            }
        }

        public uint GetAcctNoByIndex(int index)
        {
            return dataStruct[index].acctNo;
        }

        public uint GetPINByIndex(int index)
        {
            return dataStruct[index].pin;
        }

        public string GetFirstNameByIndex(int index)
        {
            return dataStruct[index].firstName;
        }

        public string GetLastNameByIndex(int index)
        {
            return dataStruct[index].lastName;
        }

        /*
        public BitmapImage GetPicByIndex(int index)
        {
            return dataStruct[index].picture;
        }*/

        public int GetBalanceByIndex(int index)
        {
            return dataStruct[index].balance;
        }

        public int GetNumRecords()
        {
            return dataStruct.Count;
        }

    }
}

//Data generator class

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
using static System.Net.Mime.MediaTypeNames;

namespace DC_tutorial_1
{
    public class DataGen
    {
        Random random = new Random();

        string [] firstName = { "Robert", "Jack", "John", "Jane", "Michael", "William", "David", "Stefan", "Nelson", "Richard", "Charlie", "Mary", "Linda", "Susan", "Jessica", "Kathleen", "Ann" };

        string [] lastName = { "Smith", "Johnson", "Williams", "Jones", "Davis", "Miller", "Wilson", "Moore", "Taylor", "Anderson", "Thomas", "Jackson", "Citizen", "Doe" };

       
        private string GetFirstName()
        {
            return firstName[random.Next(firstName.Length)];  
        }

        private string GetLastName()
        {
            return lastName[random.Next(lastName.Length)];
        }

        

        private uint GetPIN()
        {
            return (uint)random.Next(1111, 9999);
        }

        private uint GetAcctNo()
        {
            return (uint)random.Next(111111111, 999999999);
        }

        private int GetBalance()
        {
            return random.Next(0, 10000);
        }

        public void GetNextAccount(out uint pin, out uint acctNo, out string firstName, out string lastName, out int balance)
        {
            pin = GetPIN();
            acctNo = GetAcctNo();
            firstName = GetFirstName();
            lastName = GetLastName();
            balance = GetBalance();
            
        }

        public int GetNoOfAccts()
        {
            return random.Next(10000, 99999);
        }

    }
}


//DataStruct class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;

namespace DC_tutorial_1
{
    internal class DataStruct
    {
        public uint acctNo;
        public uint pin;
        public int balance;
        public string firstName;
        public string lastName;
        

        public DataStruct()
        {
            acctNo = 0;
            pin = 0;
            balance = 0;
            firstName = "";
            lastName = "";
           

        }
    }
}

//DataServerInterface

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;

namespace Server
{
    [ServiceContract]
    public interface DataServerInterface
    {
        [OperationContract]
        int GetNumEntries();

        [OperationContract]
        void GetValuesForEntry(int index, out uint acctNo, out uint pin, out int bal, out string fName, out string lName);
    }
}

标签: c#.net

解决方案


推荐阅读