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 @@
@@ -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 @@
@@ -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