Używam refleksji do załadowania widoku drzewa ze strukturą klas projektu. Każdy członek w klasie ma przypisany atrybut niestandardowy.Uzyskiwanie typu MemberInfo z odbiciem
Nie mam problemu z uzyskaniem atrybutów dla klasy przy użyciu MemberInfo.GetCustomAttributes()
, ale potrzebuję sposobu pracy, jeśli członek klasy jest niestandardową klasą, a następnie potrzebuje parsowania się, aby zwrócić niestandardowe atrybuty.
tej pory mój kod to:
MemberInfo[] membersInfo = typeof(Project).GetProperties();
foreach (MemberInfo memberInfo in membersInfo)
{
foreach (object attribute in memberInfo.GetCustomAttributes(true))
{
// Get the custom attribute of the class and store on the treeview
if (attribute is ReportAttribute)
{
if (((ReportAttribute)attribute).FriendlyName.Length > 0)
{
treeItem.Items.Add(new TreeViewItem() { Header = ((ReportAttribute)attribute).FriendlyName });
}
}
// PROBLEM HERE : I need to work out if the object is a specific type
// and then use reflection to get the structure and attributes.
}
}
Czy istnieje prosty sposób na uzyskanie typ docelowy instancji MemberInfo więc mogę poradzić odpowiednio? Czuję, że brakuje mi czegoś oczywistego, ale z każdą chwilą kręcę się w kółko.
tak, 'MemberInfo [] membersInfo =' jest złym znakiem. Jednym z powodów, dla których lubię "var" - mniej rzeczy, aby się nie pomylić. –
Fantastyczne, dzięki Daniel. – GrandMasterFlush