Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Copy Source | Copy HTML
- public TEntity Load(DataContext context, object pk)
- {
- var table = context.GetTable<TEntity>();
- return table.Where(this.FilterByPk(pk)).SingleOrDefault();
- }
-
-
- protected Expression<Func<TEntity, bool>> FilterByPk(object pk)
- {
- var entity = Expression.Parameter(typeof(TEntity), "ent");
- var keyValue = Expression.Property(entity, primaryKey);
- var primaryKeyValue = Expression.Constant(pk, keyValue.Type);
- var body = Expression.Equal(keyValue, primaryKeyValue);
- var expression = Expression.Lambda<Func<TEntity, bool>>(body, entity);
- return expression;
- }
- public void Do()
- {
- var doc = this.Load(dataContext, documentId);
-
- if (doc == null)
- {
- doc = new TEntity()
- {
- CreationTime = DateTime.Now,
- id = documentId,
- };
- dataContext.GetTable<TEntity>().InsertOnSubmit(doc);
- }
- }
-
-
public class Node<T>
{
public List<Node<T>> Children;
...
}public class Node<T>
{
public List<TThis> Children;
...
}Copy Source | Copy HTML
- public partial class Budget : BaseDoc<Budget>
- {}
- public abstract class BaseDoc<TEntity> : IDocument where TEntity : BaseDoc<TEntity>, new()
- {}
Copy Source | Copy HTML
- public class Adapter<T>
- {
- public virtual Adapter<T> DoSomething()
- {
- ...
- }
- public virtual U DoSomething<U>() where U: Adapter<T>, new()
- {
- ...
- }
- }
public static T DoSomething<T>(this T obj)
{
⋮
}
А может и нельзя ;) так или иначе, согласен – косячненько.
В дженериках C# мог бы быть полезен “this type”