将您的数据对象放在另一个单独的项目中(创建它时选择类库)并从 WCF 和 MVC2 中引用它们(除了重复,我认为否则不可能让它工作)。
[DataContract] 必须用于装饰数据对象类,无论它们在哪里。
我不确定你说“[DataContract] 部分怎么样——我还需要以某种方式在界面中填充它”的意思...你能提供一些示例代码吗?
作为参考,以下是我过去参与的项目中的一些代码:
这是在项目Server.Contracts:
namespace Server.Contracts.DataContracts.Mapped
{
using System;
using System.Runtime.Serialization;
[DataContract]
public class ConfigSetting : BindableDataContract
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string Value { get; set; }
[DataMember]
public DateTime ModifiedOn { get; set; }
public override object Clone()
{
return new ConfigSetting
{
ModifiedOn = this.ModifiedOn,
Name = this.Name,
Value = this.Value,
};
}
}
}
这也在Server.Contracts:
namespace Server.Contracts.ServiceContracts
{
using System;
using System.Net.Security;
using System.ServiceModel;
using Common.Constants.ServiceModel;
using Common.LogClient;
/// <summary>
/// Interface that defines the log service contract.
/// </summary>
[ServiceContract(
Name = ServiceContract.LogServiceName,
Namespace = ServiceContract.LogServiceNamespace,
ProtectionLevel = ProtectionLevel.None,
SessionMode = SessionMode.NotAllowed)]
public interface ILogService
{
[OperationContract(Name = "Deferred", IsOneWay = true)]
void Deferred(LogSeverity severity, DateTime eventTimeUtc, string actor,
uint? deviceId, string message, string stackTrace);
}
}
此项目引用自这两个其他项目,其中包括:
- 客户
- Server.Implementation(例如,
ILogService 已实现)