5

という名前のクラスがありNIFERepositoryます。SaveObject何も返さず、データベースに対して操作を実行するメソッドが含まれています。

public class NIFERepository<E>
{
    protected void SaveObject(object saveObject)
    {
        if (saveObject is E)
            this.RepositorySession.Merge(saveObject);
    }
}

1. 次のように、このメソッドを呼び出すパブリック拡張メソッドを作成したいと思いますSaveObject()

    public static class NIFERepositoryExtensions
    {
        public static T Save<T, E>(this T self, E saveObject) where T : NIFERepository<E>
        {
            self.SaveObject(saveObject);
            return self;
        }
    } 

しかし、保護されたスコープでは、拡張メソッドがそれを認識できません。

この形式のメソッドを機能させる方法はありますか?

2. Tとの 2 種類の拡張メソッドを作成しましたETはそれを呼び出したインスタンスであり、たとえばEmy に定義された型ProductRepository<Product>です。このメソッドを呼び出すと、定義された型が表示されません。 ここに画像の説明を入力

これを機能させる方法はありますか?

4

2 に答える 2