যদি আপনি বেস NegotitatedContentResult<T>
হিসাবে উত্তরাধিকারসূত্রে প্রাপ্ত হন, এবং আপনার নিজের রূপান্তর করার দরকার নেই content
(উদাহরণস্বরূপ আপনি কেবল একটি স্ট্রিং ফিরিয়ে দিতে চান), তবে আপনাকে ওভাররাইড করার দরকার নেইExecuteAsync
পদ্ধতিটি ।
আপনাকে যা করতে হবে তা হ'ল একটি উপযুক্ত ধরণের সংজ্ঞা এবং একটি নির্মাতা সরবরাহ করুন যা HTTP স্থিতি কোডটি ফিরে আসতে হবে সেই বেসটি বলে। অন্য সব কিছুই ঠিক কাজ করে।
এখানে উভয়ের জন্য উদাহরণ NotFound
এবং InternalServerError
:
public class NotFoundNegotiatedContentResult : NegotiatedContentResult<string>
{
public NotFoundNegotiatedContentResult(string content, ApiController controller)
: base(HttpStatusCode.NotFound, content, controller) { }
}
public class InternalServerErrorNegotiatedContentResult : NegotiatedContentResult<string>
{
public InternalServerErrorNegotiatedContentResult(string content, ApiController controller)
: base(HttpStatusCode.InternalServerError, content, controller) { }
}
এবং তারপরে আপনি এর জন্য প্রাসঙ্গিক এক্সটেনশন পদ্ধতি তৈরি করতে পারেন ApiController
(বা যদি আপনার কাছে থাকে তবে এটি বেস শ্রেণিতে করুন):
public static NotFoundNegotiatedContentResult NotFound(this ApiController controller, string message)
{
return new NotFoundNegotiatedContentResult(message, controller);
}
public static InternalServerErrorNegotiatedContentResult InternalServerError(this ApiController controller, string message)
{
return new InternalServerErrorNegotiatedContentResult(message, controller);
}
এবং তারপরে তারা বিল্ট-ইন পদ্ধতিগুলির মতোই কাজ করে। আপনি হয় বিদ্যমান NotFound()
কল করতে পারেন বা আপনি আপনার নতুন কাস্টম কল করতে পারেন NotFound(myErrorMessage)
।
এবং অবশ্যই, আপনি কাস্টম প্রকারের সংজ্ঞাগুলিতে "হার্ড কোডিং" স্ট্রিং প্রকারগুলি থেকে মুক্তি পেতে পারেন এবং আপনি যদি চান তবে জেনেরিক রেখে যেতে পারেন তবে তার উপর নির্ভর করে আপনার স্টাফ নিয়ে চিন্তিত হতে পারেExecuteAsync
<T>
আসলে ।
তোমাদের উপর সন্ধান করতে পারেন সোর্স কোড জন্য NegotiatedContentResult<T>
সব এটা আছে দেখতে। এটির তেমন কিছুই নেই।