Retrieving Components Names and Variables?

How to retieve all fields of a class and turn those fields into an array of strings?
I’m going to make this as short as possible as simple as possible. I was wondering if there was a way to recall all component names other than Componnent.name since it generally shares the same name as the GameObject. ie. How to retrieve “Transform”, “Mesh Collider”, “Light” etc. as Strings and how to retrieve the variables within those components. I don’t see a way to do this, but it’s required and the easiest way to achieve what I’m trying to achieve for an asset. If there’s a way I’d really appreicate it. I rather not have a +9999 line script to account for every component and plugin that exists for Unity…

like GetComponent(MyComponent); in Unityscript ie GetComponent(Transform).

GetComponent(); in C# ie GetComponent();

Is this not what you are on about? or did i miss read?

There’s also try and catch if you don’t know if the component name will be included in the end user’s project.

Well to better visualize what I want. Think of Unity’s Animation Window, where when an object is selected it shows the Components and Materials and the variables within each one. That is somewhat what I need.

for(var object in objects){
GUILayout.BeginVertical("box");
GUILayout.BeginHorizontal();
GUILayout.Label(object.name);
GUILayout.EndHorizontal();
var myComponents : Component[] = object.GetComponents(typeof(Component));
for(var addition : Component in myComponents){
GUILayout.Label("  >  "+addition.name+"'s Component");
}
GUILayout.EndVertical();
}

I found a better to ask for what Im asking and that is retrieving all fields of a class?