mayho33
Goto Top

C-Sharp Klasse als Parameter an Function übergeben

Hallo @ All

Ich beiße mir schon wieder die Zähne aus und hoffe aufs Neue auf eure Unterstützung mit folgender Frage:

Ich habe 2 Assemblies. in dem einen bereite ich eine klasse auf zum serialisieren in eine XML. Im anderen Assembly (eine dll) möchte ich eine Function bereitstellen die das Serialisieren der Klasse übernimmt.
Wie bekomme ich also meine Klasse als Parameter an die Function in der DLL übergeben damit ich sie serialisieren kann??

Im gleichen Assembly mache ich das z.b so:

[Serializable()]
    [XmlRoot("Config", Namespace = "http://standards.iso.org/iso/19770/-2/2009/schema.xsd", IsNullable = false)]  
    public class meineKlasse
    {
       [XmlElement("name")]  
        public string prod_name;

        [XmlElement("version")]  
        public string prod_version;
}

public void DoIt()
{
    MeineKlasse mk = new MeineKlasse(string FilePath);
    mk.prod_name= "irgendwas";  
    mk.prod_version= "123";  

    using (StreamWriter sw = new StreamWriter(FilePath))
    {
        using (TextWriter writer = sw)
        {
            XmlSerializer ser = new XmlSerializer(typeof(MeineKlasse ));
            ser.Serialize(writer, mk);
        }
    }
}


Wenn ich das so umsetze wie oben beschrieben sollte ich die Klasse doch als Object übergeben damit ich sie in der Function im anderen Assembly weiterverarbeiten kann. Bekomme es aber nicht gebacken.

Mein Versuch in etwa so:
public void FunctionImAnderenAssembly(Object classModel, string filePath)
{
    using (StreamWriter sw = new StreamWriter(filePath))
    {
        using (TextWriter writer = sw)
        {
            XmlSerializer ser = new XmlSerializer(typeof(classModel));
            ser.Serialize(writer, mk);
        }
    }
}

Sache wie hier beschrieben funktionieren leider auch nicht, oder ich verstehe es nicht:
http://stackoverflow.com/questions/2194949/how-to-use-class-name-as-par ...

Danke für die Unterstützung! Bin für jeden Hinweis Dankbar

Grüße, mayho

UPDATE:

Habe es geschaft! Der Knoten im Hirn ist weg:
public void FunctionImAnderenAssembly(Object modelClass, string outputFile)
{
    Object objClass = modelClass;
    using (FileStream fStream = File.Open(outputFile, FileMode.Create))
        {
            XmlSerializer ser = new XmlSerializer(modelClass.GetType());
            ser.Serialize(fStream, objClass);
        }    
}

Gn8, Mayho

Content-Key: 263228

Url: https://administrator.de/contentid/263228

Printed on: April 24, 2024 at 11:04 o'clock