Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 我们可以在WCF中使用没有datacontract的operationcontract吗?_Asp.net_Asp.net Mvc_Wcf_Wcf Data Services - Fatal编程技术网

Asp.net 我们可以在WCF中使用没有datacontract的operationcontract吗?

Asp.net 我们可以在WCF中使用没有datacontract的operationcontract吗?,asp.net,asp.net-mvc,wcf,wcf-data-services,Asp.net,Asp.net Mvc,Wcf,Wcf Data Services,当我们创建WCF服务时,我们有SrviceContract(接口)、OperationCOntract(方法)和DataContract(类类型) 我想知道我们是否可以在没有数据合同的情况下签订运营合同。如果是的话,任何例子都会大有帮助 谢谢你的时间 谢谢DataContract属性仅表示将在您的服务签名中使用的类。因此,如果您的服务不需要引用任何类,那么在任何地方都不会有DataContract属性 例如,如果您只有接受和返回基本类型(如字符串或数字)的方法,那么您就不必定义任何自己的类。Da

当我们创建WCF服务时,我们有SrviceContract(接口)、OperationCOntract(方法)和DataContract(类类型)

我想知道我们是否可以在没有数据合同的情况下签订运营合同。如果是的话,任何例子都会大有帮助

谢谢你的时间


谢谢

DataContract属性仅表示将在您的服务签名中使用的类。因此,如果您的服务不需要引用任何类,那么在任何地方都不会有
DataContract
属性


例如,如果您只有接受和返回基本类型(如字符串或数字)的方法,那么您就不必定义任何自己的类。

DataContract属性只表示将在服务的签名中使用的类。因此,如果您的服务不需要引用任何类,那么在任何地方都不会有
DataContract
属性


例如,如果您只有接受和返回基本类型(如字符串或数字)的方法,那么您就不必定义任何自己的类。

我不确定您为什么需要这样做,但如果您只返回和/或传递基本类型和可空值(字符串、日期、整数等)以及相同类型的列表/数组,则,您不需要创建任何数据契约。要传递的任何结构化数据都需要DataContract属性,否则将引发异常

所以,一些可行的例子是

[ServiceContract]
public interface ISimpleContract
{
    [OperationContract] void DoSomething();
    [OperationContract] int GetNumber();
    [OperationContract] string GetStatus(int userId);
    [OperationContract] string[] GetCodes(int? byDepartment);
    [OperationContract] List<int> GetNumberOfStrings(string[] strings); 
}
[服务合同]
公共接口合同
{
【运营合同】无效的DoSomething();
[OperationContract]int GetNumber();
[OperationContract]字符串GetStatus(int userId);
[OperationContract]字符串[]获取代码(按部门输入);
[OperationContract]列表GetNumberOfString(字符串[]字符串);
}

我不知道您为什么想要这个,但是如果您只返回和/或传递原语和空值(字符串、日期、int?s等)以及相同的列表/数组,则不需要创建任何数据协定。要传递的任何结构化数据都需要DataContract属性,否则将引发异常

所以,一些可行的例子是

[ServiceContract]
public interface ISimpleContract
{
    [OperationContract] void DoSomething();
    [OperationContract] int GetNumber();
    [OperationContract] string GetStatus(int userId);
    [OperationContract] string[] GetCodes(int? byDepartment);
    [OperationContract] List<int> GetNumberOfStrings(string[] strings); 
}
[服务合同]
公共接口合同
{
【运营合同】无效的DoSomething();
[OperationContract]int GetNumber();
[OperationContract]字符串GetStatus(int userId);
[OperationContract]字符串[]获取代码(按部门输入);
[OperationContract]列表GetNumberOfString(字符串[]字符串);
}

是的,但它容易脆,所以我不推荐它。你为什么不想要一个数据契约呢?你可以检查一下是否在WCF中使用数据契约@JonathanAllen在使用POCO时避免使用DataContract之类的东西是很有趣的:)是的,但它往往很脆弱,所以我不推荐它。你为什么不想要一个数据契约呢?你可以检查一下是否在WCF中使用数据契约@Jonathanalen在使用POCO时,避免使用DataContract之类的东西是很有趣的:)你甚至不需要接口,如果你愿意,你可以直接将这些属性放在类上。你甚至不需要接口,如果你愿意,你可以直接将这些属性放在类上。