Как получить имя класса с учетом его свойства - PullRequest
1 голос
/ 12 октября 2011

Можно ли получить имя класса по имени его свойства.Если это то как?Любой может помочь мне.

Ответы [ 4 ]

2 голосов
/ 12 октября 2011

Если у вас есть PropertyInfo , вы можете использовать свойство DeclaringType .Если у вас есть только какая-то строка, вы не сможете получить от нее много.Сначала вам нужно получить свойство, но чтобы получить свойство, вам сначала нужно получить декларирующий класс, так что вы уже знаете декларирующий класс.

2 голосов
/ 12 октября 2011

Я не думаю, что это напрямую возможно.Вам нужно будет найти все классы с помощью отражения, и вам нужно будет искать это конкретное свойство в каждом классе

1 голос
/ 12 октября 2011

Отражения - хорошая идея Попробуйте прочитать эту статью, расположенную по адресу MSDN.com http://msdn.microsoft.com/en-us/library/ms173183(VS.80).aspx

0 голосов
/ 12 октября 2011

Вот пример для mscorlib.dll.Он находит все классы, которые имеют свойство с именем «Capacity».

Assembly asm = Assembly.Load("mscorlib.dll");
foreach (Type type in asm.GetTypes())
{
    foreach (MemberInfo mem in type.GetMembers())
    {
        if ((mem.MemberType == MemberTypes.Property) && (mem.Name == "Capacity"))
            Console.WriteLine(type);
    }
}

Или, используя LINQ:

var asm = Assembly.Load("mscorlib.dll");
foreach (var type in from type in asm.GetTypes()
                     from mem in type.GetMembers()
                     where (mem.MemberType == MemberTypes.Property) &&
                        (mem.Name == "Capacity")
                     select type)
    Console.WriteLine(type);

Вот вывод:

System.Text.StringBuilder
System.Collections.CollectionBase
System.Collections.ArrayList
System.Collections.ArrayList+IListWrapper
System.Collections.ArrayList+SyncArrayList
System.Collections.ArrayList+FixedSizeArrayList
System.Collections.ArrayList+ReadOnlyArrayList
System.Collections.ArrayList+Range
System.Collections.SortedList
System.Collections.SortedList+SyncSortedList
System.Collections.Generic.List`1[T]
System.IO.MemoryStream
System.IO.UnmanagedMemoryStream
System.IO.PinnedBufferMemoryStream
System.IO.UnmanagedMemoryAccessor
System.IO.UnmanagedMemoryStreamWrapper
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...