为什么我无法投射此界面?

时间:2017-07-14 13:37:56

标签: c# interface casting

我将WebServer的引用添加到UWP应用程序。当我从对象获得模式时,我想要转换另一个对象 这是我从WS_Utente架构(WSDL)获得的ASMX类:

public partial class WS_Utente : object, System.ComponentModel.INotifyPropertyChanged {

    private WS_MetodoDiContatto mETODO_DI_CONTATTO_PREFERITOField;
    private int aREARISERVATAField;
    private string sEGRETOField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Order=0)]
    public string ID_UTENTE {
        get {
            return this.iD_UTENTEField;
        }
        set {
            this.iD_UTENTEField = value;
            this.RaisePropertyChanged("ID_UTENTE");
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Order=1)]
    public string AZIENDA {
        get {
            return this.aZIENDAField;
        }
        set {
            this.aZIENDAField = value;
            this.RaisePropertyChanged("AZIENDA");
        }
    }

    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

    protected void RaisePropertyChanged(string propertyName) {
        System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
        if ((propertyChanged != null)) {
            propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
        }
    }
}

我试图转向这个对象:

public interface Utente
{
    string ID_UTENTE { get; set; }
    string AZIENDA { get; set; }
}

但是当我尝试时:

public async Task<Utente> DoLogin(string Email, string Password)
{
    WS_Utente user = await service.LoginAsync(Email, Password);
    return (Utente)user;
}

它表示无法从WS_Utente投射到Utente类型。 我哪里错了?

2 个答案:

答案 0 :(得分:3)

首先,您需要继承此接口:

public partial class WS_Utente : Utente, System.ComponentModel.INotifyPropertyChanged

第二,为什么要继承对象?默认情况下,所有类都从对象继承。

第三,所有接口都应该以&#34; I&#34;开头,就像&#34; IUtente&#34;

正如mjwills指出的那样,将此方法与自动生成的代码分开实施是一种很好的做法。

答案 1 :(得分:3)

添加:

public partial class WS_Utente : Utente
{}

单独文件中添加到您现有的WS_Utente文件中。 这是允许的,因为它是一个部分类。