2016-07-11 7 views
-1

を必要とするAC#メソッドを呼び出すことはできませんSQLに存在するものこの質問に別のタックをしようとTypeパラメータ

クラスOOPFactory.X12.ImportX12を実行しようとしています。箱から出して

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Configuration; 
using OopFactory.X12.Parsing; 
using OopFactory.X12.Repositories; 
using OopFactory.X12.Sql; 
using System.IO; 
using System.Diagnostics; 
namespace OopFactory.X12.ImportX12 
{ 
    class Program 
    { 
     enum testc { incrementme }; 
     static void Main(string[] args) 
    { 
     string dsn = ConfigurationManager.ConnectionStrings["X12"].ConnectionString; 

     bool throwExceptionOnSyntaxErrors = ConfigurationManager.AppSettings["ThrowExceptionOnSyntaxErrors"] == "true"; 
     string[] segments = ConfigurationManager.AppSettings["IndexedSegments"].Split(','); 
     string parseDirectory = ConfigurationManager.AppSettings["ParseDirectory"]; 
     string parseSearchPattern = ConfigurationManager.AppSettings["ParseSearchPattern"]; 
     string archiveDirectory = ConfigurationManager.AppSettings["ArchiveDirectory"]; 
     string failureDirectory = ConfigurationManager.AppSettings["FailureDirectory"]; 
     string sqlDateType = ConfigurationManager.AppSettings["SqlDateType"]; 
     int segmentBatchSize = Convert.ToInt32(ConfigurationManager.AppSettings["SqlSegmentBatchSize"]); 

     var specFinder = new SpecificationFinder(); 
     var parser = new X12Parser(throwExceptionOnSyntaxErrors); 
     parser.ParserWarning += new X12Parser.X12ParserWarningEventHandler(parser_ParserWarning); 
     var repo = new SqlTransactionRepository<int>(dsn, specFinder, segments, ConfigurationManager.AppSettings["schema"], ConfigurationManager.AppSettings["containerSchema"], segmentBatchSize, sqlDateType); 

     //var repo = new OopFactory.X12.Sql.SqlTransactionRepository(dsn,"test"); 
     //var repo = new OopFactory.X12.Sql.SqlTransactionRepository(dsn,new testc()); 

、私はエラーを取得する「OopFactory.X12.Repositories.SqlTransationRepository」廃止されました:「を使用OopFactory.X12.Sqlライブラリと名前空間」それに対応しようと

、Iその名前空間をインポートするためにトップにusing句を追加し、そのメソッドを直接呼び出そうとします(コメント付きのrepo呼び出しのように)。

  • 私はそれを文字列をAPSSしようとすると、それはOopFactory.X12.Sql.SqlTransactionRepository ....私はまた、ときに取得するいくつかの無効な引数
  • を持っているため、「最善のオーバーロードされたメソッドの試合を私に伝えます私は、列挙型のインスタンスに渡そうとする

私の質問はこれです:。?私はSystem.Typeをのパラメータを必要とするメソッドを呼び出すにはどうすればよい

私もアップ投票してくださいよ最初のいくつかの回答は、彼らが何をしているのかを私に教えてもらうことができます。

SqlTransactionRepository(dsn, typeof(Person)); 

かの種類を取得:SqlTransactionRepository

public SqlTransactionRepository(string dsn, Type identityType) 
     : this(dsn, new SpecificationFinder(), new[] { "REF", "NM1", "N1", "N3", "N4", "DMG", "PER" }, identityType, "dbo") 
    { 
    } 
+1

[mcve] – Claudius

+0

にアクセスしてください。誤植があるだけで、エラーメッセージ「SqlTransationRepository」のスペルが間違っていると誤って入力されている可能性があります。 – RyBolt

答えて

0

ソースコード)

Identityパラメータには、持っている必要があります。

すべてのID列を渡す必要があるという意味

とそれがサポートするいずれかのintまたはlong、の種類を次のいずれか

typeof(int) 

または

typeof(long) 

希望すると助かります!

+0

これは問題を解決し、非常に役に立ちました! ありがとうございます! – vesuvian7

0

のためのメソッド署名に渡されることを期待してyがあなたのタイプは、あなたがtypeof演算(人)を使用することができる人、

であると言うことができます人の例:

Person p = new Person(); 
SqlTransactionRepository(dsn, p.GetType()); 
関連する問題