C# 方法接受可观察采集<;T>;作为参数
我有一些具有不同对象模型的可观察集合,它们都继承自同一个基本模型。例如:C# 方法接受可观察采集<;T>;作为参数,c#,inheritance,observablecollection,C#,Inheritance,Observablecollection,我有一些具有不同对象模型的可观察集合,它们都继承自同一个基本模型。例如: class Food { } class Pizza : Food { } class Rice : Food { } class Spaghetti : Food { } 以及每一个的可观察收集: ObservableCollection<Pizza> pizzaOC; ObservableCollection<Rice> riceOC; ObservableCollection<Spag
class Food { }
class Pizza : Food { }
class Rice : Food { }
class Spaghetti : Food { }
以及每一个的可观察收集:
ObservableCollection<Pizza> pizzaOC;
ObservableCollection<Rice> riceOC;
ObservableCollection<Spaghetti> spOC;
是否有任何方法可以调用单个方法,但传递不同类型的ObservableCollection?还有,有没有办法在方法中找出传递了哪种OC类型?private bool CheckFood(ObservableCollection foodItems)其中T:Food
private bool CheckFood<T>(ObservableCollection<T> foodItems) where T: Food
{
...
}
{
...
}
您可以使用类似于typeof(T)
的方法来确定传递给方法的食物类型,但最好将逻辑的责任转移到类本身private bool CheckFood(observeCollection foodItems),其中T:food
{
...
}
您可以使用类似于typeof(T)
的方法来确定传递给方法的食物类型,但最好将逻辑的责任转移到类本身private bool CheckFood(observeCollection foodItems),其中T:food
{
...
}
您可以使用类似于typeof(T)
的方法来确定传递给方法的食物类型,但最好将逻辑的责任转移到类本身private bool CheckFood(observeCollection foodItems),其中T:food
{
...
}
您可以使用类似于
typeof(T)
的方法来确定传递给方法的食物类型,但最好将逻辑的责任转移到类本身如果您的方法不依赖于显式observedcollection
的参数,您可以始终:
如果您的方法不依赖于显式
ObservableCollection
的参数,则始终可以:
如果您的方法不依赖于显式
ObservableCollection
的参数,则始终可以:
如果您的方法不依赖于显式
ObservableCollection
的参数,则始终可以:
这绝对是最好的方法。如果您需要知道方法中对象的类型,那么最好将此方法设置为虚拟方法,并在继承自“FoodViewModel”的类中使用特定行为覆盖它。您可以通过:typeof(T)或使用集合或其对象上的“is”或“as”操作符来检查食物对象的类型。感谢这项工作,我会尽快接受的。第二个问题:是否也可以在方法中找到哪种类型是T?这肯定是最好的方法。如果您需要知道方法中对象的类型,那么最好将此方法设置为虚拟方法,并在继承自“FoodViewModel”的类中使用特定行为覆盖它。您可以通过:typeof(T)或使用集合或其对象上的“is”或“as”操作符来检查食物对象的类型。感谢这项工作,我会尽快接受的。第二个问题:是否也可以在方法中找到哪种类型是T?这肯定是最好的方法。如果您需要知道方法中对象的类型,那么最好将此方法设置为虚拟方法,并在继承自“FoodViewModel”的类中使用特定行为覆盖它。您可以通过:typeof(T)或使用集合或其对象上的“is”或“as”操作符来检查食物对象的类型。感谢这项工作,我会尽快接受的。第二个问题:是否也可以在方法中找到哪种类型是T?这肯定是最好的方法。如果您需要知道方法中对象的类型,那么最好将此方法设置为虚拟方法,并在继承自“FoodViewModel”的类中使用特定行为覆盖它。您可以通过:typeof(T)或使用集合或其对象上的“is”或“as”操作符来检查食物对象的类型。感谢这项工作,我会尽快接受的。第二个问题:是否也可以在方法中找到T的类型?
CheckFood(pizzaOC);
CheckFood(riceOC);
//...
private bool CheckFood<T>(ObservableCollection<T> foodItems) where T: Food
{
...
}
public bool CheckFood<TCollection, TItem>(TCollection collection)
where TCollection : ICollection<TItem>, INotifyCollectionChanged
where TItem : Food
{
// something
}
var type = typeof(TItem);