2015-05-06 71 views
0

我想用XAML來設置通用變量的樣式。 爲此,我需要{x:Type myTypes:theType}在一種類型中的兩個通用列表

所以我必須:

public class BaseClass 
{ 
    // 
} 

public class ClassA : BaseClass 
{ 
    // 
} 

public class ClassB : BaseClass 
{ 
    // 
} 

public class ListA : List<ClassA> 
{ 
    // 
} 

public class ListB : List<ClassB> 
{ 
    // 
} 

難道我創建一個類,可以eather利斯塔或數組listB?

我需要將它用於TargetType的DataTemplate,我想只爲ListA和ListB製作一個Template,而不需要TemplateSelector。

謝謝!

回答

0

不,但您可以實現通用功能作爲接口。

在這個例子中,我修改了您的ListAListB以公開一個通用接口。我承認我不太瞭解WPF,但是這會允許您在ListAListB實例中使用常用方法。

public class BaseClass 
{ 
    public string BaseClassFoo { get; set; } 
} 

public class ClassA : BaseClass 
{ 
    public string ClassAFoo { get; set; } 
} 

public class ClassB : BaseClass 
{ 
    public string ClassBFoo { get; set; } 
} 

public interface IMyList { 
    void CommonOperation(); 
} 

public class ListA : List<ClassA>, IMyList 
{ 
    public void CommonOperation() { 
     Console.WriteLine(this[0].ClassAFoo); 
    } 
} 

public class ListB : List<ClassB>, IMyList 
{ 
    // 
    public void CommonOperation() { 
     Console.WriteLine(this[0].ClassBFoo); 
    } 
} 

class Program { 
    private static void Main(string[] args) { 
     IMyList a = new ListA { new ClassA { ClassAFoo = "I'm an A" } }; 
     IMyList b = new ListB { new ClassB { ClassBFoo = "I'm a B" } }; 

     a.CommonOperation(); 
     b.CommonOperation(); 
    } 
} 

輸出:

I'm an A 
I'm a B 
0

你是什麼意思?像這樣?

List<int> listA = new List<int>() { 1, 2, 3 }; 
List<string> listB = new List<string>() { "A", "B", "C" }; 

ICollection ListC = listA; 

ListC = listB; 
相關問題