سؤال

لدي سؤال: هل هناك طريقة أنيقة للحصول على سمات على حقل مرجعي. بمعنى آخر.:

public class C1: Base
{
    [MyAttribute]
    public string Field1;
}
public class Base
{
    private void Do(ref string field)
    {
          if (field has attributes)
              DoSomething();
    }
} 

كيف يمكنني الحصول على سمات حقل في الطريقة تفعل ()؟

شكرا مقدما.

هل كانت مفيدة؟

المحلول

لا توجد طريقة يمكنك القيام بذلك ref string field التوقيع. يتم تطبيق السمات على التصريحات (الحقول والفصول والأحداث وما إلى ذلك)، وليس "المثيلات".

ما أنت يمكن القيام به، هو تغيير طريقةك مثل هذا:

private void Do(Type fieldContainingType, string fieldName, ref string field)

ثم استخدم انعكاس للتفتيش fieldContainingType لمعرفة، يتم تطبيق السمات على الحقل المسمى fieldName. وبعد هذا النهج، ومع ذلك، هو هش للغاية وسيئة للغاية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top