আমি জেনেরিক ব্যতিক্রম শ্রেণীর সমস্ত রূপগুলি ধরতে চাই এবং আমি ভাবছিলাম যে একাধিক ক্যাচ ব্লক ছাড়াই এটি করার কোনও উপায় আছে কিনা। উদাহরণস্বরূপ বলুন আমার একটি ব্যতিক্রম শ্রেণী রয়েছে:
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>
এটি ভাল হবে।