Ich habe eine Lösung, die mehrere Projekte hat. Es gibt ein MAIN-Projekt, das die einzige externe Schnittstelle für meine Lösung sein soll. Darin habe ich Methoden zur Verfügung gestellt, die Code auslösen und Ergebnisse von einem der eingeschlossenen Projekte zurückliefern. Bisher war es für die Test-App kein Problem, die Methoden aufzurufen, ohne einen Verweis auf die anderen internen Projekte einzubauen.Wie stelle ich den Zugriff auf interne Projektklassen über eine DLL zur Verfügung
Allerdings verwende ich benutzerdefinierte Klassen in meinen Anrufen. Diese Klassen leben in einem der internen Projekte und werden verwendet, um Daten an die Methoden zu übergeben oder eine benutzerdefinierte Antwort von einer Methode abzurufen oder einen benutzerdefinierten Fehler zu generieren. Diese Klassen befinden sich in einem der internen Projekte. Mein Problem ist, dass ich nicht herausfinden kann, wie man einen Verweis auf die erforderlichen benutzerdefinierten Klassen in der aufrufenden Anwendung erhält, ohne einen Verweis auf das Projekt, in dem sich die Klasse befindet.
Als Beispiel hier ist eine Methode, die zur Verfügung gestellt wird Verbraucher durch die main_Project:
public class UtilitiesController
{
public static ShapeVerifyResponse VerifyShape(int shapeId, float[] dimensions)
{
ShapeVerifyResponse result = null;
IValidateShape worker = new clsGraphics();
try
{
result = worker.VerifyShape(shapeId, dimensions);
return result;
}
catch (Exception)
{
throw;
}
finally
{
if (result != null)
{
result = null;
}
if (worker != null)
{
worker = null;
}
}
}
die ShapeVerifyResponse in einem anderen internen Projekt definiert ist, dass die Modelle und Schnittstellen alles, was ich bin mit enthält. Hier ist die Klasse:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BBV2_DomainClasses.Models
{
public class ShapeVerifyResponse
{
public float Width { get; set; } // Width of shape
public float Height { get; set; } // Height of shape
public Boolean edgework { get; set; } // is edgework allowed
public ArrayList errorlist { get; set; } // list of errors
}
}
Wie würde ich eine Immobilie in das Hauptprojekt Code, der die Klasse des Projekts Modelle für den Verbraucher Anwendung zurückgibt?
"Mein Problem ist, ich kann nicht herausfinden, wie Sie einen Verweis auf die erforderlichen benutzerdefinierten Klassen in der aufrufenden Anwendung erhalten, ohne einen Verweis auf das Projekt, in dem die Klasse befindet." Nein, du kannst nicht. Sie können nicht erwarten, dass ein Client einen Typ kennt, ohne etwas über die Assembly zu wissen, die diesen Typ enthält. –
Also sollte ich nicht in der Lage sein, diesen Zugriff über eine Eigenschaft meiner DLL bereitzustellen? –
Ich weiß nicht, was du damit meinst. Im Grunde muss der Client jedoch einen Verweis auf die Assembly hinzufügen, die 'ShapeVerifyResponse' enthält. –