2013-08-05 58 views
0

首先,我不確定如何命名此主題。我想有一個領域的類,我想有一些他們有一些Properties,Fields。也許我會展示一些我的代碼並解釋一下。帶'屬性'的c#字段

class Column 
{ 
    public string Source { } 
    public string Destination { } 
} 

我希望「源」和「目的地」都有更多的「字段」。例如,「姓名」,「類型」等

我會讀到這樣一些文字:

Source home(1) type[3] Destination NewYork(3) Seattle[2] 

我想能夠區分哪些我的文字的一部分,把裏面的「源」和在「目的地」內。我應該怎麼做?

我知道它可能不是100%清楚,但我盡我所能寫它儘可能簡單。

回答

4

您需要定義類型和返回來自這些屬性:

public class Column 
{ 
    private Source _Source = new Source(); 
    private Destination _Destination = new Destination(); 

    public Source Source { get { return _Source; } } 
    public Destination Destination { get { return _Destination; } } 
} 

public class Source 
{ 
    public string Name { get; set; } 
    public string Type { get; set; } 
} 

public class Destination 
{ 
    public string Name { get; set; } 
    public string Type { get; set; } 
} 
+0

究竟是我想要什麼,但我不確定Source和Dest應該有什麼類型。謝謝。我會在可能的時候接受你的答案。 – user2592968

1

兩個我都想要「源」和「目的地」有內他們更多的「場」

你不能這樣做,因爲你已經指定他們有字符串類型。

如果你覺得自己應該對他們有一些領域,然後考慮將他們設爲對象,如

public class Source 
{ 
     public string Name{get;set;} 
     public string Type{get;set;} 
} 

那麼你可以編輯自己的列類這樣

public class Column 
{ 
    public Source Source { get;set;} 
} 

您可以做同樣的你的其他類也是

+0

也是很好的答案,但拉斯卡爾森速度更快。謝謝你的幫助!! – user2592968

+0

@ user2592968是的,他打敗了我6秒 – Ehsan

1

我知道這太晚了,但這是一個完整的代碼,可以幫助你,如果你喜歡試試看。

class Column 
{ 
    string plainText; 
    Regex reg = new Regex(@"(Source\b\w+\b\w+\b)(Destination\b\w+\b\w+\b)"); 
    public Source Source { 
    get { 
     Match m = reg.Match(plainText); 
     Group source = m.Groups[0]; 
     string[] s = source.Value.Split(new string[]{" "}, StringSplitOptions.RemoveEmptyEntries); 
     return m.Success ? new Source(new string[]{s[1],s[2]}) : null; 
    } 
    set { 
     Match m = reg.Match(plainText); 
     Group dest = m.Groups[1]; 
     if(m.Success) plainText = value + " " + dest.Value;    
    } 
    } 
    public Destination Destination { 
    get { 
     Match m = reg.Match(plainText); 
     Group dest = m.Groups[1]; 
     string[] s = dest.Value.Split(new string[]{" "}, StringSplitOptions.RemoveEmptyEntries); 
     return m.Success ? new Destination(new string[]{s[1], s[2]}) : null; 
    } 
    set { 
     Match m = reg.Match(plainText); 
     Group source = m.Groups[0]; 
     if(m.Success) plainText = source.Value + " " + value; 
    } 
    } 
    //This is used to change the plainText 
    //for example: SetPlainText("Source home(1) type[3] Destination NewYork(3) Seattle[2]"); 
    public void SetPlainText(string txt){ 
    plainText = txt; 
    } 
} 
public class Source 
{ 
    public Source(string[] s){ 
    Name = s[0]; 
    Type = s[1]; 
    } 
    public string Name { get; set; } 
    public string Type { get; set; } 
    public override string ToString(){ 
    return string.Format("Source {0} {1}",Name,Type); 
    } 
} 

public class Destination 
{ 
    public Destination(string[] s){ 
    Name = s[0]; 
    Type = s[1]; 
    } 
    public string Name { get; set; } 
    public string Type { get; set; } 
    public override string ToString(){ 
    return string.Format("Destination {0} {1}",Name,Type); 
    } 
} 
+0

非常有趣的做法。謝謝。 – user2592968