c# - كيفية الحصول على قائمة خصائص الطبقة؟




.net reflection (6)

كيف يمكنني الحصول على قائمة بجميع خصائص الصف؟


أنا أيضا تواجه هذا النوع من الشرط.

من هذه المناقشة حصلت على فكرة أخرى ،

Obj.GetType().GetProperties()[0].Name

هذا هو أيضا إظهار اسم الخاصية.

Obj.GetType().GetProperties().Count();

هذا يظهر عدد من الخصائص.

شكرا للجميع. هذا هو النقاش الجميل.


استنادًا إلى إجابة @ MarcGravell ، إليك إصدار يعمل في Unity C #.

ObjectsClass foo = this;
foreach(var prop in foo.GetType().GetProperties()) {
    Debug.Log("{0}={1}, " + prop.Name + ", " + prop.GetValue(foo, null));
}

هذا هو الحل الخاص بي

public class MyObject
{
    public string value1 { get; set; }
    public string value2 { get; set; }

    public PropertyInfo[] GetProperties()
    {
        try
        {
            return this.GetType().GetProperties();
        }
        catch (Exception ex)
        {

            throw ex;
        }
    }

    public PropertyInfo GetByParameterName(string ParameterName)
    {
        try
        {
            return this.GetType().GetProperties().FirstOrDefault(x => x.Name == ParameterName);
        }
        catch (Exception ex)
        {

            throw ex;
        }
    }

    public static MyObject SetValue(MyObject obj, string parameterName,object parameterValue)
    {
        try
        {
            obj.GetType().GetProperties().FirstOrDefault(x => x.Name == parameterName).SetValue(obj, parameterValue);
            return obj;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
}

هنا يتم تحسين الإجابة @ lucasjones. شملت التحسينات المذكورة في قسم التعليقات بعد إجابته. آمل أن يجد شخص ما هذا مفيدًا.

public static string[] GetTypePropertyNames(object classObject,  BindingFlags bindingFlags)
{
    if (classObject == null)
    {
        throw new ArgumentNullException(nameof(classObject));
    }

        var type = classObject.GetType();
        var propertyInfos = type.GetProperties(bindingFlags);

        return propertyInfos.Select(propertyInfo => propertyInfo.Name).ToArray();
 }

يمكنك استخدام التفكير.

Type typeOfMyObject = myObject.GetType();
PropertyInfo[] properties =typeOfMyObject.GetProperties();

يمكنك استخدام مساحة الاسم System.Reflection مع Type.GetProperties() mehod:

PropertyInfo[] propertyInfos;
propertyInfos = typeof(MyClass).GetProperties(BindingFlags.Public|BindingFlags.Static);




properties