경고를받지 않고 코드 계약에 TryParse를 사용하는 방법 :내가 경고를 코드 계약을 사용하는 경우
방법에감지 전화 'System.Int32.TryParse (선택 System.String, 선택 System.Int32 @)' 아래의 코드처럼 inteface을 정의 인터페이스 코드와 계약 클래스를 갖는 방법
의 계약에 [순수]없이. 질문은 문자열 인 orgNumberWithoutControlDigit
이 유효한 정수로 변환 될 수 있는지 확인하는 것입니다. 계수가 작동하기위한 전제 조건입니까?
public string getControlDigit(string orgNumberWithoutControlDigit)
{
List<int> orgNumberNumbers = this.getNumberList(orgNumberWithoutControlDigit);
List<int> productList = orgNumberNumbers.Zip(this.weightNumberList, (first, second) => first * second).ToList();
int modular = productList.Sum() % 11;
string controlDigit = getControlDigit(modular);
return controlDigit;
}
private static string getControlDigit(int modular)
{
string controlDigit;
if (modular == 0)
{
controlDigit = "0";
}
else if (modular == 1)
{
controlDigit = "-";
}
else
{
int result = 11 - modular;
controlDigit = result.ToString();
}
return controlDigit;
}
[ContractClass(typeof(CalculateOrgNumberControlDigitBusinessContract))]
public interface ICalculateOrgNumberControlDigitBusiness
{
string getControlDigit(string orgNumberWithoutControlDigit);
}
[ContractClassFor(typeof(ICalculateOrgNumberControlDigitBusiness))]
public abstract class CalculateOrgNumberControlDigitBusinessContract:ICalculateOrgNumberControlDigitBusiness
{
public string getControlDigit(string orgNumberWithoutControlDigit)
{
Contract.Requires(orgNumberWithoutControlDigit.Length == 8);
int parseResult;
Contract.Requires(int.TryParse(orgNumberWithoutControlDigit, out parseResult));
Contract.Ensures(parseResult >= 0);
var result = Contract.Result<string>();
Contract.Ensures(result != null && result.Length == 1);
return default(string);
}
}
"순도"(http://msdn.microsoft.com/en-us/library/dd264808.aspx)를 읽으십시오. –