如何在 WCF 服务中将接口作为参数传递?

Tyl*_*nan 5 c# wcf

我有以下内容,但是我不确定这是正确的做法。

namespace WCFServices
{
    [ServiceContract(Name = "IService")]
    [ServiceKnownTypeAttribute(typeof(DataItem))]
    public interface IService
    {
        [OperationContract]
        void InstantiateThirdParties(string name, IEnumerable<IDataItem> data, IEnumerable<string> modules, IEnumerable<string> states);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是使用接口的代码。

namespace WCFServices
{
    public class Service : IService
    {
        public void InstantiateThirdParties(string name, IEnumerable<IDataItem> data, IEnumerable<string> modules, IEnumerable<string> states)
        {
            Process.ExecuteAll(name, data, modules, states);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我目前唯一的对象类型如下。

namespace DataObjects
{
    [Serializable]
    [DataContract]
    public class DataItem : IDataItem
    {
        public DataItem();

        [DataMember]
        public CustomerInfo customer { get; set; }

        [DataMember]
        public LoanInfo loan { get; set; }

        [DataMember]
        public DateTime loanProcessingDate { get; set; }

        [DataMember]
        public string moduleID { get; set; }

        [DataMember]
        public string processingState { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我是否朝着正确的方向前进?

pap*_*adi 2

您需要使用 KnownTypeAttribute 而不是 ServiceKnownTypeAttribute。