के दोष अपवादों को पकड़ने के लिए मैं सी # में बेस गलती अनुबंध प्रकार को पकड़ने के तरीके के बारे में जानने के लिए हर जगह देख रहा हूं। मैं अपने सभी गलती अनुबंधों को एक वर्ग से प्राप्त करना चाहता हूं और एमवीसी नियंत्रक में एक पकड़ (FaultException fex) रखना चाहता हूं।सी # डब्ल्यूसीएफ पकड़ बेस प्रकार
DataContracts
[DataContract]
public class BaseClass1
{ }
[DataContract]
public class Class2 : BaseClass1
{ }
सेवा
[ServiceContract]
public interface IService1
{
[OperationContract]
[FaultContract(typeof(BaseClass1))]
[FaultContract(typeof(Class2))] //Do I need this one?
void ThrowClass2();
}
public class Service1 : IService1
{
public void ThrowClass2()
{
throw new FaultException<Class2>(new Class2(), "Class2 Reason");
}
}
सेवा उपभोक्ता
FaultTestService.Service1Client client = null;
try
{
client = new FaultTestService.Service1Client();
client.ThrowAmpFaults("InvalidParameter", 0);
}
catch (FaultException<Namespace.BaseClass1> fex)
{
//DOES NOT GO IN HERE AS I WOULD EXPECT
}
catch (FaultException fex)
{
//Other Possible Option
MessageFault fault = fex.CreateMessageFault();
var fe1 = fault.GetDetail<BaseClass1>();
//This throws a serialization exception it needs <Class2>
}
कृपया मुझे तो हमें बताएं इनमें से किसी भी कैच स्टेटमेंट को मैं जो भी ढूंढ रहा हूं उसे करने के लिए तय किया जा सकता है।
लेकिन इस व्यवहार का कारण क्या है? –