私は最近、PostSharpのサポートフォーラムでthis questionを見つけました。この質問はここで聞かれたようには見えないので、私は今それをやるでしょう。PostSharpで汎用/動的インターフェイスを導入
ジェネリックインターフェイスに関するオリジナルの質問がありました。私はそれに興味を持っていますが、私はプロキシの実装を指している間に、単にオブジェクトに対してインターフェースを動的に実装することにも興味があります。
これは私が達成しようとしているものですが、ご覧のとおり、IntroduceInterfaceAttribute
はIAspect
ではないため、下のマークされた行にエラーが発生しています。
public class ApplyInterfaces : TypeLevelAspect, IAspectProvider
{
readonly Type[] interfaceTypes;
public ApplyInterfaces(params Type[] interfaceTypes)
{
this.interfaceTypes = interfaceTypes;
}
public IEnumerable<AspectInstance> ProvideAspects(object targetElement)
{
var type = (Type)targetElement;
var targetTypes = InterfaceTypeProvider.GetInterfacesFor(type); // pseudo-code. Get interfaces to implement "somewhere".
foreach (var interfaceType in interfaceTypes.Concat(targetTypes))
{
yield return new AspectInstance(type, new IntroduceInterfaceAttribute(interfaceType)); // doesn't work.
}
}
}
これはPostSharpで可能ですか?
あなたが解決しようとしている問題は正確です。ジェネリックやインタフェースを実装したものは、かなり広いものです。あなたがしようとしていることの例と試したことの例を示してください – Batavia
のaxampleについてこれは何をしようとしているのですか?http://www.postsharp.net/blog/post/PostSharp-Principals-Day-14-e28093 - メンバーとインターフェイスの紹介 - 第1部(Googleの最初のリンク) – Batavia
あなたは正しいです@バタビア、あなたのフィードバックに感謝します。私はその質問にもっと力を入れることができた。私はいくつかのコードとより多くの文脈で更新しました。私はまた、以下の私の質問に、私が現在使っているアダプタのパターン(私が信じているもの)を使ってジェネリックインターフェイスの問題を回避するために使っているものに答えました。これらのいずれかのフィードバックは高く評価されます! –