我一直在寻找如何在c#中找到基本故障合同类型.我希望我的所有错误契约都从一个类继承,并在MVC控制器中有一个catch(FaultException fex).
DataContracts
[DataContract]
public class BaseClass1
{ }
[DataContract]
public class Class2 : BaseClass1
{ }
Run Code Online (Sandbox Code Playgroud)
服务
[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");
}
}
Run Code Online (Sandbox Code Playgroud)
服务消费者
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
} …Run Code Online (Sandbox Code Playgroud)