//---------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Linq.Expressions.Internal
{
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
// Because we are using the source file for ExpressionVistor from System.Core
// we need to add code to facilitate some external calls that ExpressionVisitor makes.
// The classes in this file do that.
internal static class Error
{
internal static Exception UnhandledExpressionType(ExpressionType expressionType)
{
return EntityUtil.NotSupported(System.Data.Entity.Strings.ELinq_UnhandledExpressionType(expressionType));
}
internal static Exception UnhandledBindingType(MemberBindingType memberBindingType)
{
return EntityUtil.NotSupported(System.Data.Entity.Strings.ELinq_UnhandledBindingType(memberBindingType));
}
}
internal static class ReadOnlyCollectionExtensions
{
internal static ReadOnlyCollection ToReadOnlyCollection(this IEnumerable sequence)
{
if (sequence == null)
return DefaultReadOnlyCollection.Empty;
ReadOnlyCollection col = sequence as ReadOnlyCollection;
if (col != null)
return col;
return new ReadOnlyCollection(sequence.ToArray());
}
private static class DefaultReadOnlyCollection
{
private static ReadOnlyCollection _defaultCollection;
internal static ReadOnlyCollection Empty
{
get
{
if (_defaultCollection == null)
_defaultCollection = new ReadOnlyCollection(new T[] { });
return _defaultCollection;
}
}
}
}
}