关于file.cs名称,类名

时间:2015-08-17 10:27:01

标签: c# web-services wcf rest

所以我跟着a tutorial使用WCF服务将JSON数据发送到SQL。

我们假设该项目名为JsonWcfService。

在这个项目中,添加了名为Order.cs的.cs文件:

namespace JsonWcfService
{
    [DataContract]
    [Serializable]
    public class wsOrder
    {
        [DataMember]
        public int OrderID { get; set; }

        //some other fields
    }
}

如您所见,文件名和类名不同。

然后,有一个函数使用这个类,反序列化发送的Json数据,接受Stream JSONDataStream作为参数:

StreamReader stream = new StreamReader(JSONDataStream);
string JSONData = stream.ReadToEnd();

JavaScriptSerializer jss = new JavaScriptSerializer();
wsOrder order = jss.Deserialize<wsOrder>(JSONData);

所以这里将数据反序列化为wsOrder类的单个实例(如果我理解正确的话)。

接下来,我们看看是否有与数据库中的OrderID匹配的记录:

testDBDataContext dc = new testDBDataContext();
Order currentOrder = dc.Orders.Where(o => o.OrderID == order.OrderID).FirstOrDefault();

这是我的困惑:Order currentOrder - 是否说它是Order.cs文件的一个实例?这是名称空间吗?

当我尝试编写自己的WCF服务并在其中创建Example.cs public class wsExample时,它会给我以下错误:

The type or namespace name 'Example' could not be found (are you missing a using directive or an assembly reference?)

当我尝试使用与上述相同的方法时:

StreamReader stream = new StreamReader(testData);
string testReceive = stream.ReadToEnd();

JavaScriptSerializer jss = new JavaScriptSerializer();
wsExample example = jss.Deserialize<wsExample>(testReceive);

testDBDataContext dc = new testDBDataContext();
Example currentExample = dc.testTable.Where(o => o.name == example.Name).FirstOrDefault();

1 个答案:

答案 0 :(得分:1)

我猜Order是拼写错误,或者是EntityFramework生成的数据库上下文中的类型。如果是后者,则应该有wsOrderOrder之间的映射,反之亦然。

我不是'作为一个档案的名字'。 C#不这样做。您可以在一个文件中包含多个类,并且可以将一个类分布在多个文件中(使用partial)。但它不会从文件派生类名。