উত্তরাধিকার বৈশিষ্ট্যগুলির জন্য কীভাবে কাজ করে?


108

Inheritedবৈশিষ্ট্যগুলিতে বুল সম্পত্তি কী বোঝায়?

এর অর্থ কি এই যে আমি যদি আমার শ্রেণিটিকে কোনও গুণাবলীর সাথে সংজ্ঞায়িত করি AbcAtribute(যা রয়েছে Inherited = true), এবং আমি যদি সেই শ্রেণি থেকে অন্য শ্রেণির উত্তরাধিকারী হই, তবে উত্পন্ন শ্রেণীরও একই বৈশিষ্ট্য প্রয়োগ করা হবে?

একটি কোড উদাহরণ সহ এই প্রশ্নটি পরিষ্কার করতে, নিম্নলিখিতটি কল্পনা করুন:

[AttributeUsage(AttributeTargets.Class, Inherited = true)]
public class Random: Attribute
{ /* attribute logic here */ }

[Random]
class Mother 
{ }

class Child : Mother 
{ }

না Childআরো আছে Randomঅ্যাট্রিবিউট এটা প্রয়োগ করা?


3
এটা ঘটনা যখন আপনি প্রশ্ন জিজ্ঞাসা ছিল না, কিন্তু আজ অফিসিয়াল ডকুমেন্টেশন Inheritedসম্পত্তি বিস্তারিত উদাহরণ আছে যা শো মধ্যে পার্থক্য Inherited=trueএবং Inherited=falseউভয় উত্তরাধিকারসূত্রে শ্রেণী এবং একটি জন্য overrideপদ্ধতি।
জেপ্পে স্টিগ নীলসেন

উত্তর:


117

যখন উত্তরাধিকারী = সত্য (যা পূর্বনির্ধারিত) এর অর্থ হ'ল আপনি যে বৈশিষ্ট্যটি তৈরি করছেন তা গুণাবলীর দ্বারা সজ্জিত শ্রেণীর উপ-শ্রেণীর দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হতে পারে।

সুতরাং - যদি আপনি [অ্যাট্রিবিউট ইউজেজ (উত্তরাধিকারী = সত্য)] দিয়ে মাইউবারএট্রিবিউট তৈরি করেন

[AttributeUsage (Inherited = True)]
MyUberAttribute : Attribute
{
   string _SpecialName;
   public string SpecialName
   { 
     get { return _SpecialName; }
     set { _SpecialName = value; }
   }
}

তারপরে একটি সুপার-ক্লাস সাজিয়ে অ্যাট্রিবিউটটি ব্যবহার করুন ...

[MyUberAttribute(SpecialName = "Bob")]
class MySuperClass 
{
  public void DoInterestingStuf () { ... }
}

আমরা যদি মাইস্পারক্লাসের একটি উপ-শ্রেণি তৈরি করি তবে এতে এই বৈশিষ্ট্যটি থাকবে ...

class MySubClass : MySuperClass
{
   ...
}

তারপরে মাইসব্লক্লাসের একটি উদাহরণ ইনস্ট্যান্ট করুন ...

MySubClass MySubClassInstance = new MySubClass();

তারপরে এটির বৈশিষ্ট্য আছে কিনা তা পরীক্ষা করুন ...

মাইসব্লক্লাসআইনস্ট্যান্স <--- এ এখন স্পষ্টনাম মান হিসাবে "বব" এর সাথে মাইউবারআট্রিবিউট রয়েছে।


21
দয়া করে নোট করুন যে অ্যাট্রিবিউটের উত্তরাধিকার ডিফল্টরূপে সক্ষম হয়েছে enabled
করস্টিয়ান বোর্ম্যান

14

হ্যাঁ এর অর্থ হ'ল এটি। গুণ

[AttributeUsage(Inherited=true)]
public class FooAttribute : System.Attribute
{
    private string name;

    public FooAttribute(string name)
    {
        this.name = name;
    }

    public override string ToString() { return this.name; }
}

[Foo("hello")]
public class BaseClass {}

public class SubClass : BaseClass {}

// outputs "hello"
Console.WriteLine(typeof(SubClass).GetCustomAttributes(true).First());

2

অ্যাট্রিবিউট উত্তরাধিকার ডিফল্টরূপে সক্ষম হয়।

আপনি এই আচরণটি দ্বারা পরিবর্তন করতে পারেন:

[AttributeUsage (Inherited = False)]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.