aspnetcore/test/WebSites/ValueProvidersSite/CustomValueProviderFactory.cs

44 lines
1.4 KiB
C#

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Globalization;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc.ModelBinding;
namespace ValueProvidersSite
{
public class CustomValueProviderFactory : IValueProviderFactory
{
public IValueProvider GetValueProvider(ValueProviderFactoryContext context)
{
if (context.HttpContext.Request.Path.Value.Contains("TestValueProvider"))
{
return new CustomValueProvider();
}
return null;
}
private class CustomValueProvider : IValueProvider
{
public Task<bool> ContainsPrefixAsync(string prefix)
{
var result = string.Equals(prefix, "test", StringComparison.OrdinalIgnoreCase);
return Task.FromResult(result);
}
public Task<ValueProviderResult> GetValueAsync(string key)
{
var value = "custom-value-provider-value";
var result = new ValueProviderResult(value, value, CultureInfo.CurrentCulture);
return Task.FromResult(result);
}
public bool IsValidFor(Type valueProviderMarkerType)
{
return false;
}
}
}
}