বিকল্প সমাধান
আমার সংস্থায়, আমরা অ-সাধারণ নিম্ন স্তরের প্রকল্পগুলি পেতে "প্রকল্পের উপরের ঝাঁপ" এড়াতে পারি। উদাহরণস্বরূপ, আমাদের উপস্থাপনা / এপিআই স্তরটি কেবলমাত্র আমাদের ডোমেন স্তরকেই রেফারেন্স করতে পারে এবং ডোমেন স্তরটি কেবল ডেটা স্তরকেই রেফারেন্স করতে পারে।
যাইহোক, যদি এমন এনাম থাকে যা উপস্থাপনা এবং ডোমেন স্তর উভয় দ্বারা রেফারেন্স করা প্রয়োজন তখন এটি একটি সমস্যা।
এখানে আমরা কার্যকরভাবে সমাধান করেছি (এখনও অবধি) সমাধান। এটি একটি দুর্দান্ত সমাধান এবং আমাদের জন্য ভাল কাজ করে। অন্যান্য উত্তরগুলি এই চারদিকে হিট করছে।
প্রাথমিক ভিত্তি হ'ল enums উত্তরাধিকারসূত্রে প্রাপ্ত হতে পারে না - তবে ক্লাসগুলি পারে। তাই ...
// In the lower level project (or DLL)...
public abstract class BaseEnums
{
public enum ImportanceType
{
None = 0,
Success = 1,
Warning = 2,
Information = 3,
Exclamation = 4
}
[Flags]
public enum StatusType : Int32
{
None = 0,
Pending = 1,
Approved = 2,
Canceled = 4,
Accepted = (8 | Approved),
Rejected = 16,
Shipped = (32 | Accepted),
Reconciled = (64 | Shipped)
}
public enum Conveyance
{
None = 0,
Feet = 1,
Automobile = 2,
Bicycle = 3,
Motorcycle = 4,
TukTuk = 5,
Horse = 6,
Yak = 7,
Segue = 8
}
তারপরে, আরও একটি উচ্চ স্তরের প্রকল্পের এনামগুলিকে "উত্তরাধিকারী" করতে ...
// Class in another project
public sealed class SubEnums: BaseEnums
{
private SubEnums()
{}
}
এর তিনটি বাস্তব সুবিধা রয়েছে ...
- উভয় প্রকল্পে এনাম সংজ্ঞাগুলি স্বয়ংক্রিয়ভাবে একই - সংজ্ঞা অনুসারে।
- এনাম সংজ্ঞাগুলির যে কোনও পরিবর্তনগুলি দ্বিতীয় শ্রেণিতে কোনও পরিবর্তন না করে স্বয়ংক্রিয়ভাবে দ্বিতীয়টিতে প্রতিধ্বনিত হয়।
- এনামগুলি একই কোডের উপর ভিত্তি করে - যাতে মানগুলি সহজেই তুলনা করা যায় (কিছু ক্যাভ্যাট সহ)।
প্রথম প্রকল্পের এনামগুলিকে উল্লেখ করতে , আপনি শ্রেণীর উপসর্গটি ব্যবহার করতে পারেন: বেসেনমস.স্ট্যাটাসটাইপ.পেন্ডিং বা যুক্ত করুন "স্ট্যাটিক বেসেনম ব্যবহার করে";আপনার ব্যবহারের বিবৃতি।
ইন দ্বিতীয় প্রকল্পের যখন তবে উত্তরাধিকারসূত্রে বর্গ সঙ্গে তার আচরণ, আমি পাই নি "স্ট্যাটিক ব্যবহার ..." কাজ পদ্ধতির, তাই "উত্তরাধিকারসূত্রে enums" এ সমস্ত রেফারেন্স বর্গ সঙ্গে পূর্বে সমাধান করা হবে, যেমন SubEnums.StatusType.Pending । যদি কেউ "স্ট্যাটিক ব্যবহার করে " অনুমতি দেওয়ার উপায় নিয়ে আসে দ্বিতীয় প্রকল্পে পদ্ধতির তবে আমাকে জানান।
আমি নিশ্চিত যে এটি আরও উন্নত করার জন্য এটি টুইট করা যেতে পারে - তবে এটি আসলে কাজ করে এবং আমি কার্যপ্রণালীতে এই পদ্ধতির ব্যবহার করেছি।
আপনি যদি সহায়ক মনে করেন তবে এটির জন্য ভোট দিন।