2017-12-27 1 views
-1

DTO에 대해 임의/의사 난수 값을 생성하는 beautiful library이 있습니다. int 형에 대한 규칙을 만들려면가짜 값으로 null 값을 나타내는 법?

var fruit = new[] { "apple", "banana", "orange", "strawberry", "kiwi" }; 

var orderIds = 0; 
var testOrders = new Faker<Order>() 
    //Ensure all properties have rules. By default, StrictMode is false 
    //Set a global policy by using Faker.DefaultStrictMode 
    .StrictMode(true) 
    //OrderId is deterministic 
    .RuleFor(o => o.OrderId, f => orderIds++) 
    //Pick some fruit from a basket 
    .RuleFor(o => o.Item, f => f.PickRandom(fruit)) 
    //A random quantity from 1 to 10 
    .RuleFor(o => o.Quantity, f => f.Random.Number(1, 10)); 

은 간단하다 :

  .RuleForType(typeof(int), f => f.Random.Number(10, 1000)) 

우리는 어떻게 널 (NULL) 기본 유형에 대한 규칙을 만들려면 어떻게해야합니까?

public class ObjectWithNullables 
{ 

    public int? mynumber{get;set;} 
    public decimal? mydec {get;set;} 
} 

우리는과 같이 구성 할 수 없습니다 :

.RuleForType(typeof(int?), f => f.Random.Number(10, 1000)) 

우리는 어떻게 표현합니까 nullables를 예를 들어

우리의 모델은 널 (NULL)의 int null이 deimcals이 있다면?

+0

당신이 당신의 예'RuleForType' 무엇을하려고 발생하면? 설명서를 읽었습니까? – NetMage

답변

3

주어진 유형의 모든 입력란/속성에 대해 하나의 규칙을 제공하려는 경우 빠른 검토는 RuleForType만을 사용해야한다는 것을 의미하는 것으로 보입니다.

RuleForType과 관련된 문제는 올바른 유형을 반환 한 람다를 전달하지 않는다고 생각합니다. 첫 번째 매개 변수의 형식은 람다의 반환 형식과 일치해야합니다. 당신은 null 값의 몇 가지 가능성을해야하는 경우,

.RuleForType(typeof(int?), f => (int?)f.Random.Number(10, 1000)) 

를 사용 비율을 선택하고 널 가끔 반환 :

.RuleForType(typeof(int?), f => (f.Random.Number(1,10) == 1 ? (int?)null : f.Random.Number(10, 1000))) 
+0

그러나 이것은 주어진 프로퍼티에 대해 'null'값을 반환하지 않습니다 (심지어 작동한다고 가정). 따라서 null이 유효한 값이기 때문에 그러한 구현이 그리 좋지 않습니다. – Evk

+0

이제 다른 질문을하고 있습니다. 답변 수정 됨. – NetMage

관련 문제