Может быть, это проблема X-Y, но я хочу, чтобы ответить на него в любом случае.
Нет, вы не можете. Почему? Посмотрим, что произойдет, если мы сможем может. У нас есть класс:
public class Something {
public static object MyProp {get; set;} //I use a static property here just for convenience
}
И теперь вы используете какие-то таинственные методы отражения, чтобы изменить свойство IChangedIt
.
Something.MyProp = 5;
MysteriousReflectionMethod();
Something.MyProp = 10;
Будет ли этот код скомпилировать? Никто не знает. После метода MyProp
даже существует? Я имею в виду, что компилятор знает, что в Something
есть MyProp
. Однако после того, как вы измените его имя, такого свойства нет!
Это парадокс!
Да, так что в основном вы не можете ...
Теперь касается проблемы XY ...
Вы можете просто хотите иметь пары ключ-значение, а иногда вы хотите измените ключ. Вы можете использовать Dictionary<TKey, TValue>
. Вы можете поместить в него пары ключевых значений, и вы можете изменить ключ! Вот Документы:
https://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx
Нет, потому что это компилируемый язык. Вам нужно будет использовать ткачество IL. – Jeff
Нет, не изменяя IL, и даже тогда вы играете с огнем, так как другой код может ссылаться на свойство. Почему вы хотите изменить его? Может быть проблема X-Y ... –
Мне любопытно, почему вы хотели бы это сделать. У вас есть несколько классов с одинаковыми именами на нескольких пространствах имен, и вы хотите указать пространство имен, чтобы избежать конфликтов? – oscilatingcretin