c# - 如何在 .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);
}
}
解决方案
推荐阅读
- javascript - 在 React Native 中更改其他组件的状态
- angular - Firebase Web FCM 消息(messaging/use-public-key-before-get-token)
- bootstrap-4 - 如何使用引导程序创建网格
- dart - 如何阻止颤振视频播放器播放我的旧视频?
- angular - Angular 7 测试:NullInjectorError:ActivatedRoute 没有提供者
- numpy - 在同一数据数组上应用多个参数函数
- jenkins - 如何在詹金斯管道阶段视图中抑制 shell 命令输出?
- ruby - 如何使用 Ruby 和 RSpec 测试 HTTParty API 调用
- shell - Kill:AIX 7.1 上的无效信号
- excel - 不知道为什么我得到变量未定义错误