2016-11-25 2 views
1

Ist es möglich, einer Klasse aus einem anderen Projekt eine Methode hinzuzufügen?Methode zu einer Klasse aus einem anderen Projekt hinzufügen

Ich habe eine Klasse:

namespace ProjectLibrary 
{ 
    public class ClassA 
    { 
     // some methods 
    } 
} 

Ich mag eine Methode hinzufügen mein Objekt in einer Datei zu speichern, aber ich will nicht, diese Methode in meinem Projekt ProjectLibrary hinzufügen, weil ich nicht wollen, Verweis auf System.IO hinzufügen (Ich möchte dieses Projekt für Android-Anwendung und PC-Anwendung verwenden).

Gibt es eine Möglichkeit, eine Methode SaveToFile() hinzuzufügen, die nur in einem anderen Projekt verwendet werden kann? Oder erstellen Sie eine abstrakte Methode in ClassA, aber definieren Sie sie in einem anderen Projekt.

So:

using ProjectLibrary; 
namespace ProjectOnPC 
{ 
    void methodExample() 
    { 
     ClassA obj = new ClassA(); 
     // do sommething 
     obj.SaveToFile();// => available only in namespace ProjectOnPC 
    } 
} 

Vielen Dank für Hilfe

+0

Sie bennefits mit bedingtem Kompilieren –

+1

Werfen Sie einen Blick auf Erweiterungsmethoden haben könnte. – Carra

+1

Erweiterungsmethode oder erben die Klasse vielleicht? –

Antwort

1

das, was Sie für Ihre Suche heißt Extension method:

-Code für Basisklasse:

namespace ProjectLibrary 
{ 
    public ClassA 
    { 
     // some methods 
    } 
} 

Erweiterungsmethode:

using ProjectLibrary; 
namespace ProjectOnPC 
{ 
    void SaveToFile(this ClassA Obj, string Path) 
    { 
     //Implementation of saving Obj to Path 
    } 
} 

in Ihr Programm aufrufen:

using ProjectLibrary; 
using ProjectOnPc; //if You won't include this, You cannot use ext. method 

public void Main(string[] args) 
{ 
    ClassA mObj = new ClassA(); 
    mObj.SaveToFile("c:\\MyFile.xml"); 
} 
+0

Didn, weiß das nicht, danke für die Antwort und die Dokumentation. –

3

Sie Erweiterungsmethoden verwenden können.

Beispiel:

namespace ProjectOnPC 
{ 
    public static void SaveToFile(this Class myClass) 
    { 
     //Save to file. 
    } 
} 
+0

Sie haben die Klassendeklaration verpasst. –

1

Sie können eine Erweiterungsmethode zu diesem Zweck erstellen.

Hier ist ein Beispiel.
In Ihrem ProjectOnPc Namespace eine Klasse wie folgt erstellen:

public static class ClassAExtension 
{ 
    public static void SaveToFile(this ClassA obj) 
    { 
     // write your saving logic here. 
     // obj will represent your current instance of ClassA on which you're invoking the method. 
     SaveObject(obj). 
    } 
} 

Sie Methoden mehr über Erweiterung hier lernen können:
https://msdn.microsoft.com/en-us//library/bb383977.aspx

Verwandte Themen