Я бы хотел сделать возможной перегрузку универсального метода.Поскольку мне нужно создать ObjectSet<..>
, не зная универсального типа, содержащегося в нем, я хочу создать что-то вроде этого:
public IQueryable<T> MyMethod<T>() where T : class, (IMyFirst || IMySecond) //notice the syntax..!
{
if(typeOf(T) is IMyFirst..
else ...
}
Как мне достичь своей цели ..?
Обновление:
@ BrokenGlass wrote:
Этот тип ограничений невозможен в C # - однако вы можете ограничиться IFoo, и IMyFirst и IMySecond оба реализуют IFoo.
Но это предложение не применимо, пожалуйста, посмотрите это:
interface1 { property1 {..}}
interface2 { property2 {..}}
interfaceIFoo : interface1, interface2 { }
любым методом:
MyWrapper.Retrieve<EntityProduct>(myObjContext); //error-> EntityProduct implements interface1 only!!
другим любым методом:
MyWrapper.Retrieve<EntityOrder>(myObjContext); //error-> EntityOrder implements interface2 only!!
и здесь:
public static IQueryable<T> Retrieve<T>(ObjectContext context) where T :class, interfaceIFoo
{
var query = context.CreateObjectSet<T>().AsQueryable();
//...