複数のプロジェクトを持つソリューションがあります。私のソリューションのための唯一の外部インターフェイスになりたいMAINプロジェクトがあります。その中で私はコードを実行し、含まれているプロジェクトの結果を返すメソッドを提供しました。これまでテストアプリケーションが他の内部プロジェクトへの参照を含まずにメソッドを呼び出すことは問題ありませんでした。DLLを使用して内部プロジェクトクラスへのアクセスを提供する方法
しかし私は自分の呼び出しでカスタムクラスを使用しています。これらのクラスは、内部プロジェクトのいずれかに存在し、メソッドにデータを渡すか、メソッドからカスタム応答を受け取るか、カスタムエラーを発生させるために使用されます。これらのクラスは、内部プロジェクトの1つに存在します。私の問題は、クラスが存在するプロジェクトへの参照を含めずに、呼び出し元のアプリケーションで必要なカスタムクラスへの参照を取得する方法を見つけることができないことです。
例として、 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;
}
}
}
ShapeVerifyResponseは、私が使用していますすべてのモデルとインタフェースが含まれている別の内部プロジェクトで定義されています。ここでは、そのクラスは次のとおりです。
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
}
}
どのように私は、コンシューマアプリケーションにモデルプロジェクトのクラスを返しメインプロジェクト内のプロパティをコーディングしますか?
"私の問題は、呼び出し元のアプリケーションで必要なカスタムクラスへの参照を、そのクラスが存在するプロジェクトへの参照を含めずに取得する方法を理解できないことです。まあ、できません。クライアントは、そのタイプを含むアセンブリについて知らなくても、そのタイプについて知ることは期待できません。 –
DLLのプロパティを使ってそのアクセスを提供できないようにする必要がありますか? –
あなたはそれが何を意味するのか分かりません。しかし基本的に、クライアントは 'ShapeVerifyResponse'を含むアセンブリへの参照を追加する必要があります。 –