2017-03-31 1 views
0

私はこのようなインターフェースを持っています。一貫性のないアクセシビリティ:制約タイプ「特別」はアイテムデータベースの汎用保存オブジェクトよりアクセスしにくい

interface special 
{ 
    int spz_ID { get; set; } 

    string Specialization_name { get; set; } 

} 

一般的な方法では、インターフェイスを実装するTタイプが必要です。

public int SaveObjects<T>(T obj) where T : special 
    { 

     lock (locker) 
     { 
      if (obj.spz_ID != 0) 
      { 
       database.Update(obj); 
       return obj.spz_ID; 

      } 
      else 
      { 
       return database.Insert(obj); 
      } 


     } 
    } 

や他のテーブルこのテーブルのこの

public interface IObject 
{ 
    int ID { get; set; } 

    string Username { get; set; } 
    string Password { get; set; } 



} 

ジェネリックメソッドがインターフェイスを実装Tタイプは

public int SaveObject<T>(T obj) where T : IObject 
    { 

     lock (locker) 
     { 
      if (obj.ID != 0) 
      { 
       database.Update(obj); 
       return obj.ID; 

      } 
      else 
      { 
       return database.Insert(obj); 
      } 


     } 
    } 

私は私のソリューションを構築するときに私が持っている期待しているように異なるインタフェースを持っていますエラー: 一貫性のないアクセシビリティ:制約タイプ "特別"は、アイテムデータベースの一般的な保存オブジェクト(T)よりもアクセスしにくいです。

+1

'interface special'を' public interface special'に変更しました – Evk

答えて

0

お客様の方法はpublicと定義されています。そのためには汎用タイプTも公開する必要があります。タイプがspecialであるという制約があるので、そのタイプも公開でなければなりません。

インターフェイスはデフォルトではinternalとして作成されます。明示的に指定されていない場合は、publicよりアクセスしにくいインターフェイスです。

publicにあなたのインターフェイス定義を変更して、あなたは大丈夫です

public interface special 
{ 
    //... member definitions 
} 

あなたのインターフェイスは、そのインターフェイスを使用して任意の方法は、いずれかでなければなりませんpublicにしたくない場合。

関連する問題