Как получить доступ к переменным подкласса через ссылку на суперкласс с C# - PullRequest
0 голосов
/ 14 марта 2020

У меня есть Пользователь класс, который является моим родительским классом. и у меня есть SiteAdmin класс, который унаследован от Пользователь класс:

public abstract class User { }
public class SiteAdmin : User 
{
   public string ProfilePicUrl { get; set; }
}

Сценарий: я хочу проверить, является ли Пользователь Экземпляр имеет тип SiteAdmin класса, затем доступ к SiteAdmin свойствам с User объектом. Предположим, что ProfilePicUrl является свойством SiteAdmin класса. Как я могу получить доступ к этому свойству с помощью User объекта?

if (comment.User is SiteAdmin)
{
   var profilePicUrl = comment.User.ProfilePicUrl;
}

Ответы [ 2 ]

2 голосов
/ 14 марта 2020

Попробуйте:

if (comment.User is SiteAdmin siteAdmin)
{
    var profilePicUrl = siteAdmin.ProfilePicUrl;
}

Или вы можете сделать это:

if (comment.User is SiteAdmin)
{
    var profilePicUrl = (comment.User as SiteAdmin).ProfilePicUrl;
}
0 голосов
/ 14 марта 2020

Вы можете определить контракт между супер и подклассом, например, абстрактный метод, на User, а SiteAdmin реализует абстрактный метод и возвращает ProfilePicUrl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...