- IGenericService находится в сборке с именем: «ABC.Server.Common» (ABC.Server.Common.dll).
- MyType находится в сборке с именем: «ABC.Server.Modules.X» (ABC.Server.Modules.X.dll)
КОД:
public class ABC.Server.Modules.XService :
ABC.Server.Common.IGenericService<ABC.Server.Module.X.MyType>
{
ABC.Server.Common.GenericResponse<ABC.Server.Module.X.MyType> DoFoo(ABC.Server.Common.GenericRequest<ABC.Server.Module.X.MyType> request)
{
//Do Stuff Here
}
}
Сжатый код:
public class XService :
IGenericService<MyType>
{
GenericResponse<MyType> DoFoo(GenericRequest<MyType> request)
{
//Do Stuff Here
}
}
Web.config:
я не использую файлы SVC, вместо этого я храню эту информацию в файле Web.config:
<add factory="System.ServiceModel.Activation.ServiceHostFactory"
relativeAddress="Services/X.svc"
service="ABC.Server.Modules.X.XService"/>
<service name="ABC.Server.Modules.X.XService"
behaviorConfiguration="StandardBehavior">
<endpoint bindingConfiguration="StandardBinding"
binding="basicHttpBinding"
contract="?" />
</service>
Что я должен указать в названии контракта, чтобы он действительно работал?
DataContract
иCollectionDataContract
... вы можете использовать{0} ... {N}
в свойствеName
атрибута для размещения имени типа.[DataContract(Name = "Get{0}")] class GetGeneric<T>
даст Getint или GetFoo или т. д. в качестве имени конкретного типа. Это не работает наOperationContract
илиDataMember
. Почему? Я понятия не имею :) - person myermian   schedule 28.06.2011