Первый вопрос: как я могу получить тип объекта, хранящегося в переменной? Обычно мы делаем:
Type t = typeof(ClassName); //if I know the class
но как я могу что-то сказать:
Type t = typeof(varClassName); //if the class name is stored in a variable
Второй вопрос, более общая картина, у меня есть служба WCF, которая содержит класс DataContract, скажем, «MyClass», и я определил для него собственный атрибут MyAttribute. Есть один метод скажет «GetDataUsingDataContract» с параметром типа MyClass. Теперь на клиенте я вызываю веб-сервис. Я использую классы MethodInfo и ParameterInfo, чтобы получить параметры рассматриваемого метода. Но как я могу получить доступ к атрибутам параметра метода, который на самом деле является классом Myclass? Вот код, который я пробовал:
MyService.Service1Client client = new MyService.Service1Client();
Type t = typeof(MyService.Service1Client);
MethodInfo members = t.GetMethod("GetDataUsingDataContract");
ParameterInfo[] parameters = members.GetParameters();
foreach (var parameter in parameters)
{
MemberInfo mi = parameter.ParameterType; //Not sure if this the way
object[] attributes;
attributes = mi.GetCustomAttributes(true);
}
Приведенный выше код не возвращает мне пользовательский атрибут "MyAttribute". Я попробовал концепцию в классе, который определен в том же проекте, и он работает. Пожалуйста, ПОМОГИТЕ!