كيفية الحصول على سمات على حقل المشار إليه
-
19-09-2019 - |
سؤال
لدي سؤال: هل هناك طريقة أنيقة للحصول على سمات على حقل مرجعي. بمعنى آخر.:
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
. وبعد هذا النهج، ومع ذلك، هو هش للغاية وسيئة للغاية.
لا تنتمي إلى StackOverflow