在解决方案,命名空间和WCF服务中使用相同名称是否很重要?
这是我的项目结构,
Solution Fruits (7 projects)
Fruits.Project1
Fruits.Project2
....
Fruits.Internal.WebServices
IFruits.cs
Fruits.cs
web.config
的web.config
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<configuration>
<system.serviceModel>
<services>
<service name="Fruits.Internal.WebServices.FruitsJuicer" behaviorConfiguration="myBehavior">
<endpoint address="" binding="basicHttpBinding" contract="Fruits.Internal.WebServices.IFruitsJuicer" bindingConfiguration="tooty_BasicHttpBinding"/>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
</service>
</services>
<bindings> and so on....
<service name="Fruits.Internal.WebServices.Fruits"
在浏览器中我收到此错误
在服务'Fruits'实施的合同列表中找不到合同名称'Fruits.Internal.WebServices.Fruits'。
'name'属性无效 - 值'Fruits.Internal.WebServices.Fruits'根据其数据类型'serviceNameType'无效 - Enumeration约束失败。
服务代码
namespace Fruits.Internal.WebServices
{
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class FruitsJuicer
{
public void GetFruitJuice(Details d)
{
typedDataAccess da = new typedDataAccess();
da.AddRequest(d);
}
}
}
答案 0 :(得分:1)
将类命名为与命名空间相同通常不被认为是一种好的做法 - 因为编译器无法区分命名空间和类之间的差异,因此最多必须更频繁地在代码中限定类。
此外,您可能想要考虑您的命名感并根据其功能命名。我知道你上面的例子是设计的,例如:
Solution Fruits (7 projects)
Fruits.Project1
Fruits.Project2
....
Fruits.Internal.WebServices
IFruitJuicer.cs
FruitJuicer.cs //Methods for juicing fruits.
//Just calling it Fruits is a bit generic.
要真正回答您的初始问题,您的班级(Fruits
)不会实现您的界面(IFruits
)。像这样改变:
public class FruitsJuicer :IFruits
{
public void GetFruitJuice(Details d)
{
typedDataAccess da = new typedDataAccess();
da.AddRequest(d);
}
}