Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2225 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
14 changed files with 249 additions and 24 deletions
@ -0,0 +1,49 @@ |
|||||||
|
// <file>
|
||||||
|
// <copyright see="prj:///doc/copyright.txt"/>
|
||||||
|
// <license see="prj:///doc/license.txt"/>
|
||||||
|
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
|
||||||
|
// <version>$Revision$</version>
|
||||||
|
// </file>
|
||||||
|
|
||||||
|
using System; |
||||||
|
|
||||||
|
namespace ICSharpCode.WpfDesign.XamlDom |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Delegate used for XamlParserSettings.CreateInstanceCallback.
|
||||||
|
/// </summary>
|
||||||
|
public delegate object CreateInstanceCallback(Type type, object[] arguments); |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Settings used for the XamlParser.
|
||||||
|
/// </summary>
|
||||||
|
public sealed class XamlParserSettings |
||||||
|
{ |
||||||
|
CreateInstanceCallback _createInstanceCallback = Activator.CreateInstance; |
||||||
|
XamlTypeFinder _typeFinder = XamlTypeFinder.CreateWpfTypeFinder(); |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets/Sets the method used to create object instances.
|
||||||
|
/// </summary>
|
||||||
|
public CreateInstanceCallback CreateInstanceCallback { |
||||||
|
get { return _createInstanceCallback; } |
||||||
|
set { |
||||||
|
if (value == null) |
||||||
|
throw new ArgumentNullException("value"); |
||||||
|
_createInstanceCallback = value; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets/Sets the type finder to do type lookup.
|
||||||
|
/// </summary>
|
||||||
|
public XamlTypeFinder TypeFinder { |
||||||
|
get { return _typeFinder; } |
||||||
|
set { |
||||||
|
if (value == null) |
||||||
|
throw new ArgumentNullException("value"); |
||||||
|
_typeFinder = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,63 @@ |
|||||||
|
// <file>
|
||||||
|
// <copyright see="prj:///doc/copyright.txt"/>
|
||||||
|
// <license see="prj:///doc/license.txt"/>
|
||||||
|
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
|
||||||
|
// <version>$Revision$</version>
|
||||||
|
// </file>
|
||||||
|
|
||||||
|
using System; |
||||||
|
|
||||||
|
namespace ICSharpCode.WpfDesign.Extensions |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// A special kind of extension that is used to create instances of objects when loading XAML inside
|
||||||
|
/// the designer.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// CustomInstanceFactory in Cider: http://blogs.msdn.com/jnak/archive/2006/04/10/572241.aspx
|
||||||
|
/// </remarks>
|
||||||
|
[ExtensionServer(typeof(NeverApplyExtensionsExtensionServer))] |
||||||
|
public class CustomInstanceFactory : Extension |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Gets a default instance factory that uses Activator.CreateInstance to create instances.
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes")] |
||||||
|
public static readonly CustomInstanceFactory DefaultInstanceFactory = new CustomInstanceFactory(); |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a new CustomInstanceFactory instance.
|
||||||
|
/// </summary>
|
||||||
|
protected CustomInstanceFactory() |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates an instance of the specified type, passing the specified arguments to its constructor.
|
||||||
|
/// </summary>
|
||||||
|
public virtual object CreateInstance(Type type, params object[] arguments) |
||||||
|
{ |
||||||
|
return Activator.CreateInstance(type, arguments); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// An extension server that never applies its extensions - used for special extensions
|
||||||
|
// like CustomInstanceFactory
|
||||||
|
sealed class NeverApplyExtensionsExtensionServer : ExtensionServer |
||||||
|
{ |
||||||
|
public override bool ShouldApplyExtensions(DesignItem extendedItem) |
||||||
|
{ |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
public override Extension CreateExtension(Type extensionType, DesignItem extendedItem) |
||||||
|
{ |
||||||
|
throw new NotImplementedException(); |
||||||
|
} |
||||||
|
|
||||||
|
public override void RemoveExtension(Extension extension) |
||||||
|
{ |
||||||
|
throw new NotImplementedException(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue