我只是想知道是否可以在一个接口中使用多个基类。我面临的问题是我为一个接口使用了 2 个(并且还会有更多)基类。使用第一个完全没有问题,但是当我尝试使用第二个时,它不起作用。
我简短地写下代码
[ServiceContract(Namespace = "http://bla.ServiceModel.Samples", SessionMode = SessionMode.Required)]
[ServiceKnownType(typeof(ObservableCollection<Models.Model1>))]
[ServiceKnownType(typeof(ObservableCollection<Models.MOdel2>))]
public interface IService
{
[OperationContract]
ObservableCollection<Models.Model1> AccessModel1();
[OperationContract]
ObservableCollection<Models.Model2> AccessModel2(string group);
}
与客户端连接后,创建 Model1 的集合可以正常工作。当我尝试创建 Model2 的集合时,它只是崩溃了。内部异常是“现有连接被远程主机强行关闭”。
模型 1 和模型 2 包含不同的信息,但具有相同的结构。
是否存在根本性错误或其他问题?
如果您需要任何进一步的信息,欢迎您!
更新
我将发布模型类。也许我只是瞎了眼,看不到错误。
[DataContract]
public class Model2
{
private string status;
private string name;
private string telephone;
public Model2(string sStatus, string sName, string sTelephone)
{
Status = sStatus;
Name = sName;
Telephone = sTelephone;
}
[DataMember(IsRequired = true, Order = 0)]
public string Status
{
get { return status; }
set { status = value; }
}
[DataMember(IsRequired = true, Order = 1)]
public string Name
{
get { return name; }
set { name = value; }
}
[DataMember(IsRequired = true, Order = 2)]
public string Telephone
{
get { return telephone; }
set { telephone = value; }
}
}
internal class Model2Builder: ObservableCollection<Model2>
{
public Model2Builder(string group)
: base()
{
try
{
DataTable dt = new Database().GetModel2Data(group);
foreach (DataRow row in dt.Rows)
{
Add(new Model2(row[0].ToString(), row[1].ToString(), row[2].ToString()));
}
dt.Dispose();
}
catch (Exception ex)
{
//Code for log...
}
}
}