2012-05-17 3 views
2

I имеют некоторый метод, например:возвращения вар типа переменной

public VAR GetAllPosts() 
    { 
     var post = from p in _db.Posts select p; 
     return post; 
    } 

Как переменный возврат вар типа?

+5

Невозможно сделать. Посмотрите, какой тип var и возвращает это, или измените запрос, чтобы вернуть тип, который вы можете использовать. – Rawling

ответ

6

На основе вашего кода, вы знаете, что это будет перечень сообщений, так что вернуть

public IEnumerable<Posts> GetAllPosts() 
    { 
     var post = from p in _db.Posts select p; 
     return post; 
    } 

или

public IEnumerable<Posts> GetAllPosts() 
    { 
     return from p in _db.Posts select p; 
    } 

Если вы хотите пойти хардкор вы могли бы использовать что-то Лик e это, это общий тип T, вы должны вызвать метод с нужным типом и внутри него проверить тип и делать то, что вам нравится.

public List<T> GetData<T>() 
    { 
     //Validate the type and do something 
     if (typeof(T) == typeof(MyClass)) 
     { 
     List<MyClass> lst = new List<MyClass>(); 
     lst.Add(new MyClass { ClassProperty = "Value" }); 

     return lst as List<T>; 
    } 
    else // do something else 
    { 
     return null; 
    } 
    } 

Для вызова этого метода вы передаете правильному тип

List<MyClass> list = GetData<MyClass>(); 

Надеется, что это помогает.

+0

Thanx, я сделал это уже – user1271127

9

У вас может быть это object, однако вам все равно придется бросать его, чтобы использовать его соответствующим образом. dynamic - еще один вариант, но может быть больше проблем, чем его ценность.

Я думаю, что вы можете захотеть, это IQueryable<T>, где T - это тип Posts.

5

var не является типом, поэтому его нельзя вернуть.

Если вы не уверены в обратном типе, верните object (как предполагает Даниэль), если он может быть более одного типа, верните базовый тип, если он есть.

В вашем конкретном случае, кажется, что вы пытаетесь вернуть IEnumerable<T> объектов в _db.Posts

Смежные вопросы