本文整理汇总了C#中AMFReader.AddReference方法的典型用法代码示例。如果您正苦于以下问题:C# AMFReader.AddReference方法的具体用法?C# AMFReader.AddReference怎么用?C# AMFReader.AddReference使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AMFReader
的用法示例。
在下文中一共展示了AMFReader.AddReference方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReadData
public object ReadData(AMFReader reader)
{
object instance = null;
string typeIdentifier = reader.ReadString();
if(log.IsDebugEnabled )
{
string msg = string.Format("Attempt to read custom object {0}", typeIdentifier);
log.Debug(msg);
}
IReflectionOptimizer reflectionOptimizer = _optimizedReaders[typeIdentifier] as IReflectionOptimizer;
if( reflectionOptimizer == null )
{
lock(_optimizedReaders)
{
if (!_optimizedReaders.Contains(typeIdentifier))
{
if(log.IsDebugEnabled )
{
string msg = string.Format("Generating optimizer for type {0}", typeIdentifier);
log.Debug(msg);
}
//Temporary reader
_optimizedReaders[typeIdentifier] = new AMF0TempObjectReader();
Type type = ObjectFactory.Locate(typeIdentifier);
if( type != null )
{
instance = ObjectFactory.CreateInstance(type);
reader.AddReference(instance);
if (type != null)
{
IBytecodeProvider bytecodeProvider = null;
#if NET_1_1
//codedom only
if( FluorineConfiguration.Instance.OptimizerSettings != null )
bytecodeProvider = new FluorineFx.IO.Bytecode.CodeDom.BytecodeProvider();
#else
if (FluorineConfiguration.Instance.OptimizerSettings.Provider == "codedom")
bytecodeProvider = new FluorineFx.IO.Bytecode.CodeDom.BytecodeProvider();
if (FluorineConfiguration.Instance.OptimizerSettings.Provider == "il")
bytecodeProvider = new FluorineFx.IO.Bytecode.Lightweight.BytecodeProvider();
#endif
reflectionOptimizer = bytecodeProvider.GetReflectionOptimizer(type, null, reader, instance);
//Fixup
if (reflectionOptimizer != null)
_optimizedReaders[typeIdentifier] = reflectionOptimizer;
else
_optimizedReaders[typeIdentifier] = new AMF0TempObjectReader();
}
}
else
{
if( log.IsWarnEnabled )
log.Warn("Custom object " + typeIdentifier + " could not be loaded. An ActionScript typed object (ASObject) will be created");
reflectionOptimizer = new AMF0TypedASObjectReader(typeIdentifier);
_optimizedReaders[typeIdentifier] = reflectionOptimizer;
instance = reflectionOptimizer.ReadData(reader, null);
}
}
else
{
reflectionOptimizer = _optimizedReaders[typeIdentifier] as IReflectionOptimizer;
instance = reflectionOptimizer.ReadData(reader, null);
}
}
}
else
{
instance = reflectionOptimizer.ReadData(reader, null);
}
return instance;
}