2016-07-11 2 views
-1

을 필요로하는 교류 # 메소드를 호출 할 수 없습니다 SQL에 존재하는 것.이 질문에 또 다른 압정을 시도 타입 매개 변수

OOPFactory.X12.ImportX12 클래스를 실행하려고합니다. 상자, 나는 오류 'OopFactory.X12.Repositories.SqlTransationRepository'의 아웃

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.Sql 라이브러리와 네임 스페이스'

그 응답을 시도, 나는 해당 네임 스페이스를 가져 오기 위해 맨 위에 using 절을 추가하고 (주석이 달린 repo 변수의 호출에서 볼 수 있듯이) 해당 메소드를 직접 호출하려고 시도하십시오.

  • 나는 그것을 문자열을 APSS을 시도, 그것은
  • 나는 또한 얻을 'OopFactory.X12.Sql.SqlTransactionRepository ...'일부 잘못된 인수가에 대해 "최선의 오버로드 된 메서드 일치 하더군요 때 내가 열거의 인스턴스를 전달하려고

내 질문은 이것이다 :.? 내가 System.Type의 매개 변수를 필요로하는 메소드를 호출하려면 어떻게

나는 또한 투표를해야거야 당신이 그들이 무엇을 의미 하는지를 나에게 말해 줄 수 있다면 처음에는 정확히 몇 점의 대답을 할 수있다.

SqlTransactionRepository(dsn, typeof(Person)); 

을 또는의 종류 : y를

당신은 대해서 typeof (사람)를 사용할 수 있습니다, 당신의 유형은 사람이라고 말할 수 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

소스 코드 (OopFactory X12 Parser)

Identity 매개 변수가 있어야합니다

모든 ID 열이 통과해야 의미

와 지원 중 하나를 int 또는 long의 유형 중 하나

typeof(int) 

또는

typeof(long) 

희망 하시겠습니까?

+0

이것은 문제를 해결하고 매우 유용했습니다! 감사합니다. – vesuvian7

0

방법 서명에 전달 될 것으로 예상 사람의 사례 :

Person p = new Person(); 
SqlTransactionRepository(dsn, p.GetType());