Yapamazsınız. WCF'de yöntem imzaları ile ilgili birçok kısıtlama vardır; bazı kısıtlamalar, host mekanizması ve diğerleri WSDL/MEX nedeniyle.
WCF'nin hizmet kodunuzu ve aşırı yüklenmiş yöntemleri ve diğer birçok şeyi varsayılan parametrelere sahip olmanıza izin vermesine rağmen, hizmeti verdiğinizde başlayabilir veya başlatılabilir veya çalışmaya başlayabilir, ancak işe yarayabilir. Bu zor.
Bunun üstesinden gelmek için yaptığım şey, gerektiğinde nealable parametreleri kullanmam, sonra istemci kodumda her zaman otomatik olarak oluşturulmuş istemci proxy'ye erişen bir hizmet katmanım var; Servis katmanım istediğim tüm aşırı yüklenmelere ve isteğe bağlı paramize sahip. Örnek (kirli kodu):
WCF hizmeti: (benim tarafımdan yazılmamış autogenerated vekil, ama bir)
[OperationContract]
[FaultContract(typeof(MyCustomFault))]
List<InventoryPart> SelectMany(string partialPartNumber, string division, int? subDivision, bool? isActive);
Müşteri Servis Katmanı
public List<InventoryPart> GetParts(string partialPartNumber){
return GetParts(partialPartNumber, null);
}
public List<InventoryPart> GetParts(string partialPartNumber, string division){
return GetParts(partialPartNumber, division, null);
}
public List<InventoryPart> GetParts(string partialPartNumber, string division, int? subDivision){
return GetParts(partialPartNumber, division, subDivision, null);
}
public List<InventoryPart> GetParts(string partialPartNumber, string division, int? subDivision, bool? isActive){
// This method is the one that actually calls the client proxy channels and all.
}
Müvekkilim uygulaması İstemci Hizmet Katmanı'nı tüketir
public void LoadPartNumbers(){
var parts = ClientServiceLayer.GetParts(this.txtPartNumber.Text, null, (int) this.cboDivisions.SelectedItem);
}
Bilmiyorum; yapabilir misin? (Başka bir deyişle - deneyin) –
@Tom W - hiçbir şey için teşekkürler, denedim ve işe yaramış gibi görünüyor ama okuduğum her yer, DanielCuadra'nın (sizinki gibi) cevabını da içeren hayır diyor. – BBauer42