আমি জেনেরিক ব্যতিক্রম শ্রেণীর সমস্ত রূপগুলি ধরতে চাই এবং আমি ভাবছিলাম যে একাধিক ক্যাচ ব্লক ছাড়াই এটি করার কোনও উপায় আছে কিনা। উদাহরণস্বরূপ বলুন আমার একটি ব্যতিক্রম শ্রেণী রয়েছে:
public class MyException<T> : Exception
{
public string MyProperty { get; }
public MyException(T prop) : base(prop.ToString())
{
MyProperty = prop?.ToString();
}
}
এবং দুটি উত্পন্ন ক্লাস:
public class MyDerivedStringException : MyException<string>
{
public MyDerivedStringException(string prop) : base(prop)
{
}
}
public class MyDerivedIntException : MyException<int>
{
public MyDerivedIntException(int prop) : base(prop)
{
}
}
উভয় MyDerivedStringExceptionএবং MyDerivedIntExceptionএকটি ক্যাচ ব্লকে ধরার উপায় আছে ?
আমি এটি চেষ্টা করেছি:
try
{
...
}
catch(Exception e) when (e is MyDerivedStringException || e is MyDerivedIntException)
{
}
তবে এটি খুব পরিষ্কার নয় এবং এর অর্থ হল আমার অ্যাক্সেস নেই MyProperty।
আমি সমস্যার সাধারণ সমাধানে আগ্রহী কিন্তু আমার ক্ষেত্রে জেনেরিক ব্যতিক্রম একটি তৃতীয় পক্ষের লাইব্রেরিতে সংজ্ঞায়িত করা হয়েছে যা নীচে বর্ণিত হিসাবে সমস্যাটিতে কিছু অতিরিক্ত বাধা যুক্ত করে।
ExceptionএবংMyException<T>এটি ভাল হবে।