public IStorableObject ToGitObject(Repository repo, string sha) { using (GitObjectReader objectReader = new GitObjectReader(Content)) { IStorableObject obj; switch (Type) { case ObjectType.Commit: obj = new Commit(repo, sha); break; case ObjectType.Tree: obj = new Tree(repo, sha); break; case ObjectType.Blob: obj = new Blob(repo, sha); break; case ObjectType.Tag: obj = new Tag(repo, sha); break; default: throw new NotImplementedException(); } obj.Deserialize(objectReader); return obj; } }