2009-09-11 50 views
8

我想要做的是創建具有不同特性的某些屬性的一類,這個類傳遞到另一個,將設置適當的隨機數據的屬性...在這裏僞代碼:是否有任何工具用隨機數據填充類屬性?

public class Customer 
{ 
    [Attribute("FirstName")] 
    private string CustomerFirstName; 
    public {get;set} //etc 

    [Attribute("LastName")] 
    private string CustomerLastName; 
    public {get;set;} //etc 

    [Attribute("DateTime")] 
    private DateTime CustomerSignUpDate; 
    public DateTime {get;set;} //yadda 

    [Attribute("Phone")] 
    private string CustomerPhone; 
    public string {get;set;} //yadda 
} 

而且然後做這樣的

IList<Customer> CustomerList=ClassFillerOutClass(new Customer(),5); 

其結果將是5級具有在其物業適當的「隨機」數據的客戶清單。

如果不存在......我想我可以啓動一個項目自己做......我只是不想推倒重來,如果它是沒有必要的。

編輯:我忘了一塊。我正在使用這個作爲測試工具。所以在上面的例子中,我可以快速創建一個包含隨機但適當值的5個客戶的列表。然後說,通過我的持久性方法,並有我可以檢查的東西。我試圖避免每次爲我的TDD目的手動創建一個填充對象。

編輯2:好了,所以我開始我自己的滾動......我會在本週末發佈在Codeplex上並在此處鏈接...我清楚不會做,但它會是一個開始,如果別人想要在它上面工作。

回答

8

好的...所以我從來沒有找到一個....所以我決定開始我自己的。退房時間: Object Hydrator

該項目目前是一個快速上升......但我認爲它有潛力...讓我知道如果你有想法如何使它變得更好。

+1

感覺錯誤接受我自己的答案......但是Object Hydrator似乎是迄今爲止相當不錯的解決方案。 – Webjedi 2009-09-16 17:47:52

+1

那裏非常有趣的項目。你處理內部集合/列表/數組/字典的創建,以及使用'get'唯一訪問器來創建屬性嗎? – julealgon 2015-03-02 16:07:49

+0

我們可以處理內部列表,而不是數組或字典。實際上並沒有嘗試過獲得者。 – Webjedi 2015-03-04 22:37:10

0

我不知道你在這裏的目標,但我會保持接近代碼級別。這種方法可能不適合你,但它對我來說是過去的。

您可以生成隨機數據並將其放入數據庫。有一些商業成本低的產品可以做到這一點。我使用的是RedGate的SQL Data Generator。

根據手中的資料,你可以做一些文字操作的SQL轉換列數據:

Table Customer 
FirstName | LastName | SignUpDate | Phone 
Bob   Smith  1/2/2009  555-555-1212 
Jane  Doe  9/11/2009 555-300-1334 
... 

分爲:

new Customer() 
{ 
    CustomerFirstName = "Bob", 
    CustomerLastName = "Smith", 
    CustomerSignUpDate = DateTime.Parse("1/2/2009"), 
    Phone = "555-555-1212" 
}, 
new Customer() 
{ 
    CustomerFirstName = "Jane", 
    CustomerLastName = "Doe", 
    CustomerSignUpDate = DateTime.Parse("9/11/2009"), 
    Phone = "555-300-1334 
}, 

,幷包裝成使用文本編輯器下面這個(這是C#3.0語法):

public class FakeCustomerRepository 
{ 
    private IList<Customer> m_Customers = new List<Customer>() 
       { 
        [insert SQL text transform here] 
       }; 

    public Customer Get(...) 
    { 
    return m_Customers.Find(...); 
    } 
} 

再次,我不知道您的需要,並且您是否需要運行時的隨機數據。上述方法只有在您想要快速靜態生成大量數據時纔有用。

+0

我還不夠清楚......我加入了這個問題。 – Webjedi 2009-09-11 21:44:23

+0

好吧,很抱歉地說我沒有意識到一個可定製的運行時類數據隨機數發生器,這是我覺得你所要求的。 – 2009-09-11 22:15:33

1

現在你也有NBuilder(nbuilder.org),也是這樣。

我不知道兩個項目是否有聯繫。

-1

可以使用對象保溼在C#

URL http://objecthydrator.codeplex.com/

,並使用像

public Employee GetEmployee() 
{ 
    return new Hydrator<Employee>().GetSingle(); 
} 

public IList< Employee> GetEmployees() 
{ 
return new Hydrator<Employee>().GetList(100); 
} 

阿南德更多

+5

查看接受的答案。我沒有找到任何東西后寫了ObjectHydrator。 :) – Webjedi 2014-10-23 19:20:21

0

所有建議不要對我的複雜對象的工作對象填料。

我有超級複雜的嵌套對象數組與嵌套數組,這是我的一半工作。 http://hydrator.codeplex.com/

我填充除了數組以外的所有東西。