2015-06-01 5 views
0

у меня есть:Как получить значение из интерфейса?

public class UserContactInformation : IUserContactInformation 
{ 
    public bool IsDefaultContactInformation { get; set; } 
    public string Email { get; set; } 
} 

и интерфейс:

public interface IUserContactInformation 
{ 
    bool IsDefaultContactInformation { get; set; } 
    string Email { get; set; } 
    string Phone { get; set; } 
} 

Как я могу получить электронную почту в контроллере, потому что я не вижу UserContactInformation в мой контроллер. Это не видно. Мне нужна какая-то функция, например, getEmail()? Я не могу использовать что-то вроде этого:

model.Email = user.UserContactInformation.Email; 
+0

Я думаю, это зависит от того, как вы указали свою модель в своем представлении, указали ли вы свой интерфейс (IUserContactInformation) или ваш конкретный класс (UserContactInformation)? Если вы указали свой интерфейс, тогда будет доступен «Email». Однако вы обнаружите, что ваш код не компилируется в текущей форме, поскольку вы указали «Email» в своем интерфейсе, и вы его не реализовали в своем конкретном классе, что недопустимо. – Luke

+0

им не уверен, что я понимаю вас ... я преуспел, чтобы инициализировать значения, и теперь я пытаюсь их распечатать ... я не знаю, как это сделать – None

+0

, потому что я не могу использовать UserContactInformation.Email ... его значение null – None

ответ

0

Ваш код в настоящее время недействителен, он не будет скомпилирован, потому что вы не можете указать Phone, определенный в вашем интерфейсе, а затем не сможете реализовать его в классе, который он определил.

public interface IUserContactInformation 
{ 
    bool IsDefaultContactInformation { get; set; } 
    string Email { get; set; } 
    string Phone { get; set; } 
} 

// Invalid 
public class UserContactInformation : IUserContactInformation 
{ 
    public bool IsDefaultContactInformation { get; set; } 
    public string Email { get; set; } 
} 

// Valid 
public class UserContactInformation : IUserContactInformation 
{ 
    public bool IsDefaultContactInformation { get; set; } 
    public string Email { get; set; } 

    // If this is in the interface, it needs to be implemented 
    public string Phone { get; set; } 
} 

Во-вторых, если вы хотите напечатать Email, предположительно в пределах вашей точки зрения, вы установите модель в окне, а затем print его с помощью бритвы синтаксис:

ExampleView.cshtml:

@model IUserContactInformation 

<p>Hello, my email address is @Model.Email<p> 
+0

Я добавил ссылку, и теперь я вижу UserContactInformation, но теперь у меня проблема с печатью значений для этих пользователей .... например: model.Email = UserContactInformation.Email? потому что я не вижу электронную почту и IsDefaultContactInformation? если вы знаете, что я имею в виду – None

+0

, потому что они сейчас в базе данных, и теперь мне нужно распечатать их для этого конкретного пользователя ... его, как и его личная информация – None

+0

Что вы имеете в виду, вы его не видите? – Luke

0

Интерфейс: link

Класс или структура, которая реализует интерфейс должен реализовать члены интерфейса, которые указаны в определении интерфейса

Итак, если вы хотите использовать его, создать экземпляр и затем использовать его:

var userContactInfo = new UserContactInformation(); 
model.Email = userContactInfo.Email; 
+0

Я сделал это, когда я инициализирую значения ... но теперь мне нужно их распечатать ... мне нужно использовать тот же процесс? – None

+0

и UserContactInformation не распознаются – None

Смежные вопросы