2016-04-29 14 views
2

Ich möchte ein Objekt als geerbte Basisschnittstelle zurückgeben. Da IMasterData und IGetValues ​​von anderen Projekten gemeinsam genutzt werden, bin ich mir nicht sicher, wie viele Änderungen ich vornehmen könnte. Der Code ist wie folgt:C# return object als geerbte Basisschnittstelle

public class WithData : IBasicData 
{ 
    public string prop1 { get; set; } 
    public string prop2 { get; set; } 
    public string prop3 { get; set; } 
    public string prop4 { get; set; } 
} 

public interface IBasicData: IMasterData 
{ 
    string prop3 { get; set; } 
    string prop4 { get; set; } 
} 

public interface IMasterData 
{ 
    string prop1 { get; set; } 
    string prop2 { get; set; } 
} 

public interface IGetValues 
{ 
    IMasterData FillValues(someType element) 
} 

public class MyClass : IGetValues 

public IMasterData FillValues(someType element) 
{ 
    var u = new WithData 
    { 
     prop1 = element.value1, 
     prop2 = element.value2, 
     prop3 = element.value3, 
     prop4 = element.value4 
    }; 
    return u; 
} 

ich einen Fehler im Gegenzug u sagen, dass es nicht um das Objekt zu Withdata Rückgabetyp IMasterData umwandeln kann. Aufgrund der Vererbungskette dachte ich, es wäre möglich. Wie kann ich das Objekt als IMasterData-Typ zurückgeben?

+0

haben Sie Guss versucht? Rückgabe als IMasterData –

+0

Ich bekomme eine Ausnahme, "kann Objekt des Typs 'WithData' nicht umwandeln, um 'IMasterData' einzugeben." – user1970778

+1

Sehr seltsam, Ihr Code funktioniert hier gut, können Sie den vom Compiler angegebenen Fehler angeben? –

Antwort

1

Dies ist weitgehend Ihr Code und es läuft gut. Wenn Sie also nicht angeben, wo das Problem liegt, können wir Ihnen nicht viel helfen.

src

public interface IMasterData 
{ 
    string Prop1 { get; set; } 
    string Prop2 { get; set; } 
} 

public interface IBasicData : IMasterData 
{ 
    string Prop3 { get; set; } 
    string Prop4 { get; set; } 
} 

public class WithData : IBasicData 
{ 
    public string Prop1 { get; set; } 
    public string Prop2 { get; set; } 
    public string Prop3 { get; set; } 
    public string Prop4 { get; set; } 
} 

public class SomeType 
{ 
    public string value1, value2, value3, value4; 
} 

public interface IGetValues 
{ 
    IMasterData FillValues(SomeType element); 
} 

public class MyClass : IGetValues 
{ 
    public IMasterData FillValues(SomeType element) 
    { 
     var u=new WithData() 
     { 
      Prop1=element.value1, 
      Prop2=element.value2, 
      Prop3=element.value3, 
      Prop4=element.value4 
     }; 
     return u; 
    } 
}