Доброго дня,Найти родительский класс от собственности
Я не совсем уверен, как фраза на мой вопрос, поэтому, пожалуйста, простите все, что не имеет отношения, и, если я оставил что-нибудь важные, пожалуйста, дай мне знать! Я также неопытен с lambdas, regex и linq, так что сделайте что-нибудь, что я делаю плохо/может быть лучше.
Мой вопрос: могу ли я получить ссылку на класс, из которого я знаю только свойство? В частности, в следующем фрагменте кода я хотел бы изменить индекс 0 в propertyValues[0]
на переменную, хранящуюся в том же классе. Есть что-то вроде: this
, который обращается к родительскому?
Для получения более подробной информации я вставил соответствующий снимок ниже.
return Regex.Replace (originalString, "{(.*?)}", match =>
User.user.properties.First(property =>
property.id == match.ToString().Substring (1, match.ToString().Length - 2))
.propertyValues[0].adjectives[0]);
public class Property
{
public string id;
public List<Value> propertyValues = new List<Value>();
public sbyte propertyIndex;
}
Спасибо, что нашли время, чтобы прочитать это!
EDITСпасибо за обратную связь, Филипп Stuyck я постараюсь сделать лучше объяснить.
Я также ищу способ получить ссылку на родительский класс свойства или способ создания локальной переменной в выражении лямбда. Для иллюстрации у меня есть следующий класс и метод возврата.
класс недвижимости,
public class Property
{
public string id;
public List<Value> propertyValues = new List<Value>();
public sbyte propertyIndex;
}
класс пользователя,
public class User
{
public static User user = new User();
internal List<Property> properties = new List<Property>();
}
GetVariable метод,
public static class GetVariable
{
public static string FromUser (string originalString)
{
return Regex.Replace (originalString, "{(.*?)}", match => User.user.properties.First (property => property.id == match.ToString().Substring (1, match.ToString().Length - 2)).propertyValues[0].adjectives[0]);
}
}
Метод GetVariable.FromUser
должен вернуть новую строку, которая заменила каждый экземпляр подстрока, заключенная в скобки с строкой от User.user.properties
, Таким образом, он может быть передан «Это {Пример}.» И вернуть «Это демонстрация» (если у класса User было свойство с примером id и значением Demo).
Мой вопрос связан с методом GetVariable, а точнее, с последней частью: propertyValues[0]
. Я хотел бы, чтобы индекс (в настоящее время 0) был переменной в классе Property, который находит делегат User.user.properties.First
.
В идеале это будет так же просто, как User.user.properties.First (property => property.id == match.ToString()).propertyValues[property.propertyIndex]
, но я не могу получить доступ к свойству вне круглых скобок.
Надеюсь, это помогло объяснить это, хотя я чувствую, что все еще слишком сложно. Если я смогу придумать лучший способ рассказать о моем вопросе, я сделаю это. Кроме того, я буду рад прояснить что-либо посредством комментария.
Полностью не понимаю, что вы имеете в виду. Пожалуйста, перефразируйте полностью. –
@PhilipStuyck Спасибо за комментарий! Я попытался перефразировать мой вопрос, надеюсь, теперь это станет более ясным. Я не очень хорошо объясняю эти вопросы, поэтому, пожалуйста, простите мою бедную работу раньше. Если он все еще слишком расплывчатый, пожалуйста, спросите в комментариях, поэтому я могу попытаться сделать его более понятным. Еще раз спасибо! –