私はIAp.cs
という名前のインターフェイスファイルを持っており、それは次のインターフェイスを実装:次にインターフェイスで定義され、C#でクラスに実装されたメソッドを呼び出す方法は?
public interface IAp
{
Output Process(double min, double max, IEnumerable<string> items);
}
を、私はこのように定義されたクラスがあります。
[Export(typeof(IAp))]
public class Ap : IAp
{
readonly ISorter _sorter;
public Ap()
{
_sorter = ContainerProvider.Container.GetExportedValue<ISorter>();
}
Output IAp.Process(double min, double max, IEnumerable<string> items)
{
// rest removed for brevity
}
}
ISorter
インタフェースを、そしてContainerProvider
クラスが定義されています次のように別々のファイルに保存します。
interface ISorter
{
string Sort(string token);
}
internal static class ContainerProvider
{
private static CompositionContainer container;
public static CompositionContainer Container
{
get
{
if (container == null)
{
List<AssemblyCatalog> catalogList = new List<AssemblyCatalog>();
catalogList.Add(new AssemblyCatalog(typeof(ISorter).Assembly));
container = new CompositionContainer(new AggregateCatalog(catalogList));
}
return container;
}
}
}
私はProcess
メソッドに電話したいと思います。私はこのようなものでした:
private readonly IAp _ap;
Output res = _ap.Process(50, 100, items);
をしかし、これは_ap
が割り当てされることはありませんと言い、そしてそれは、したがって、それはProcess
メソッドを呼び出すことはありません、nullです。それはNullReference
エラーをスローします。
私はまた、以下のようにクラスを初期化してみました:
private Ap app = new Ap();
しかし、私はそのメンバーにアクセスするapp.
をすれば、次に、それはありません、Process
方法を見つけることができません。別のソースファイルとクラスでProcess
メソッドを呼び出す方法はありますか?
を民間 'てみてくださいIAp app = new Ap(); ' –