本文整理汇总了C#中Dispatch2.GetNativeInstance方法的典型用法代码示例。如果您正苦于以下问题:C# Dispatch2.GetNativeInstance方法的具体用法?C# Dispatch2.GetNativeInstance怎么用?C# Dispatch2.GetNativeInstance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Dispatch2
的用法示例。
在下文中一共展示了Dispatch2.GetNativeInstance方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SaveStructuredDataForObject
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
public static void SaveStructuredDataForObject(Dispatch2 dsp, AList<Dispatch2> stack
, TextWriteStreamInterface stream, string indentstr)
{
// check object recursion
int count = stack.Count;
for (int i = 0; i < count; i++)
{
Dispatch2 d = stack[i];
if (d == dsp)
{
// object recursion detected
stream.Write("null /* object recursion detected */");
return;
}
}
// determin dsp's object type
DictionaryNI dicni;
ArrayNI arrayni;
if (dsp != null)
{
dicni = (DictionaryNI)dsp.GetNativeInstance(DictionaryClass.ClassID);
if (dicni != null)
{
// dictionary
stack.AddItem(dsp);
dicni.SaveStructuredData(stack, stream, indentstr);
stack.Remove(stack.Count - 1);
return;
}
else
{
arrayni = (ArrayNI)dsp.GetNativeInstance(ArrayClass.ClassID);
if (arrayni != null)
{
// array
stack.AddItem(dsp);
arrayni.SaveStructuredData(stack, stream, indentstr);
stack.Remove(stack.Count - 1);
return;
}
else
{
// other objects
stream.Write("null /* (object) \"");
// stored as a null
Variant val = new Variant(dsp, dsp);
stream.Write(LexBase.EscapeC(val.AsString()));
stream.Write("\" */");
return;
}
}
}
stream.Write("null");
}
示例2: Assign
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
public virtual void Assign(Dispatch2 dsp, bool clear)
{
// copy members from "dsp" to "Owner"
// determin dsp's object type
ArrayNI arrayni = null;
CustomObject owner = mOwner.Get();
if (dsp != null && (arrayni = (ArrayNI)dsp.GetNativeInstance(ArrayClass.ClassID))
!= null)
{
// convert from array
if (clear)
{
owner.Clear();
}
int count = arrayni.mItems.Count;
for (int i = 0; i < count; i++)
{
Variant v = arrayni.mItems[i];
string name = v.AsString();
i++;
if (i >= count)
{
break;
}
Variant v2 = arrayni.mItems[i];
owner.PropSet(Interface.MEMBERENSURE | Interface.IGNOREPROP, name, v2, owner);
}
}
else
{
// otherwise
if (clear)
{
owner.Clear();
}
DictionaryNI.AssignCallback callback = new DictionaryNI.AssignCallback(owner);
dsp.EnumMembers(Interface.IGNOREPROP, callback, dsp);
}
}
示例3: Process
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
protected internal override int Process(Variant result, Variant[] param, Dispatch2
objthis)
{
RandomGeneratorNI _this = (RandomGeneratorNI)objthis.GetNativeInstance(Kirikiri.Tjs2.RandomGeneratorClass
.mClassID);
if (_this == null)
{
return Error.E_NATIVECLASSCRASH;
}
int hr = _this.Construct(param, objthis);
if (hr < 0)
{
return hr;
}
_this.Randomize(param);
return Error.S_OK;
}
示例4: Process
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
protected internal override int Process(Variant result, Variant[] param, Dispatch2
objthis)
{
DateNI _this = (DateNI)objthis.GetNativeInstance(Kirikiri.Tjs2.DateClass.mClassID
);
if (_this == null)
{
return Error.E_NATIVECLASSCRASH;
}
if (param.Length < 1)
{
return Error.E_BADPARAMCOUNT;
}
_this.mDateTime.Set(Calendar.DAY_OF_MONTH, param[0].AsInteger());
return Error.S_OK;
}
示例5: PropSetByNum
// property set by index number
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
public override int PropSetByNum(int flag, int num, Variant param, Dispatch2 objthis
)
{
if (!GetValidity())
{
return Error.E_INVALIDOBJECT;
}
ArrayNI ni = (ArrayNI)objthis.GetNativeInstance(ArrayClass.ClassID);
if (ni == null)
{
return Error.E_NATIVECLASSCRASH;
}
if (num < 0)
{
num += ni.mItems.Count;
}
if (num >= ni.mItems.Count)
{
if ((flag & Interface.MEMBERMUSTEXIST) != 0)
{
return Error.E_MEMBERNOTFOUND;
}
//ni.mItems.resize(num+1);
for (int i = ni.mItems.Count; i <= num; i++)
{
ni.mItems.AddItem(new Variant());
}
}
if (num < 0)
{
return Error.E_MEMBERNOTFOUND;
}
Variant val = ni.mItems[num];
return DefaultPropSet(flag, val, param, objthis);
}
示例6: FuncCall
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
public override int FuncCall(int flag, string membername, Variant result, Variant
[] param, Dispatch2 objthis)
{
if (membername != null)
{
return base.FuncCall(flag, membername, result, param, objthis);
}
if (param.Length < mParamTypes.Length)
{
return Error.E_INVALIDPARAM;
}
// パラメータが少ない
if (result != null)
{
result.Clear();
}
object self;
if (mIsStatic)
{
self = null;
}
else
{
// static 时は null
if (objthis == null)
{
return Error.E_NATIVECLASSCRASH;
}
NativeJavaInstance ni = (NativeJavaInstance)objthis.GetNativeInstance(mClassID);
if (ni == null)
{
return Error.E_FAIL;
}
self = ni.GetNativeObject();
if (self == null)
{
return Error.E_NATIVECLASSCRASH;
}
}
int er = Error.S_OK;
object[] args = NativeJavaClass.VariantArrayToJavaObjectArray(param, mParamTypes);
try
{
object ret = mProcess.Invoke(self, args);
if (result != null)
{
NativeJavaClass.JavaObjectToVariant(result, mReturnType, ret);
}
}
catch (ArgumentException)
{
er = Error.E_INVALIDPARAM;
}
catch (MemberAccessException)
{
er = Error.E_ACCESSDENYED;
}
catch (TargetInvocationException e)
{
Exception t = e.InnerException;
if (t is VariantException)
{
throw (VariantException)t;
}
else
{
if (t is TJSException)
{
throw (TJSException)t;
}
else
{
throw new TJSException(t.ToString());
}
}
}
return er;
}
示例7: Process
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
protected internal override int Process(Variant result, Variant[] param, Dispatch2
objthis)
{
RegExpNI _this = (RegExpNI)objthis.GetNativeInstance(Kirikiri.Tjs2.RegExpClass.mClassID
);
if (_this == null)
{
return Error.E_NATIVECLASSCRASH;
}
if (param.Length < 1)
{
return Error.E_BADPARAMCOUNT;
}
string target = param[0].AsString();
bool purgeempty = false;
if (param.Length >= 3)
{
purgeempty = param[2].AsBoolean();
}
Holder<Dispatch2> array = new Holder<Dispatch2>(null);
_this.Split(array, target, purgeempty);
if (result != null)
{
result.Set(array.mValue, array.mValue);
}
return Error.S_OK;
}
示例8: PropSet
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
public override int PropSet(int flag, string membername, Variant param, Dispatch2
objthis)
{
if (membername != null)
{
return base.PropSet(flag, membername, param, objthis);
}
if (objthis == null)
{
return Error.E_NATIVECLASSCRASH;
}
if (param == null)
{
return Error.E_FAIL;
}
if (mSet == null)
{
return Error.E_ACCESSDENYED;
}
object self;
if (mIsStaticSet)
{
self = null;
}
else
{
// static 时は null
NativeJavaInstance ni = (NativeJavaInstance)objthis.GetNativeInstance(mClassID);
if (ni == null)
{
return Error.E_FAIL;
}
self = ni.GetNativeObject();
if (self == null)
{
return Error.E_NATIVECLASSCRASH;
}
}
int er = Error.S_OK;
object arg = NativeJavaClass.VariantToJavaObject(param, mParamType);
if (arg == null)
{
return Error.E_INVALIDPARAM;
}
object[] args = new object[1];
args[0] = arg;
try
{
mSet.Invoke(self, args);
}
catch (ArgumentException)
{
er = Error.E_INVALIDPARAM;
}
catch (MemberAccessException)
{
er = Error.E_ACCESSDENYED;
}
catch (TargetInvocationException e)
{
Exception t = e.InnerException;
if (t is VariantException)
{
throw (VariantException)t;
}
else
{
if (t is TJSException)
{
throw (TJSException)t;
}
else
{
throw new TJSException(t.ToString());
}
}
}
return er;
}
示例9: PropGet
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
public override int PropGet(int flag, string membername, Variant result, Dispatch2
objthis)
{
if (membername != null)
{
return base.PropGet(flag, membername, result, objthis);
}
if (result == null)
{
return Error.E_FAIL;
}
if (mGet == null)
{
return Error.E_ACCESSDENYED;
}
object self;
if (mIsStaticGet)
{
self = null;
}
else
{
// static 时は null
if (objthis == null)
{
return Error.E_NATIVECLASSCRASH;
}
NativeJavaInstance ni = (NativeJavaInstance)objthis.GetNativeInstance(mClassID);
if (ni == null)
{
return Error.E_FAIL;
}
self = ni.GetNativeObject();
if (self == null)
{
return Error.E_NATIVECLASSCRASH;
}
}
int er = Error.S_OK;
try
{
object ret = mGet.Invoke(self, new object[]{});
NativeJavaClass.JavaObjectToVariant(result, mReturnType, ret);
}
catch (ArgumentException)
{
er = Error.E_INVALIDPARAM;
}
catch (MemberAccessException)
{
er = Error.E_ACCESSDENYED;
}
catch (TargetInvocationException e)
{
Exception t = e.InnerException;
if (t is VariantException)
{
throw (VariantException)t;
}
else
{
if (t is TJSException)
{
throw (TJSException)t;
}
else
{
throw new TJSException(t.ToString());
}
}
}
return er;
}
示例10: Set
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
public override int Set(Variant param, Dispatch2 objthis)
{
RegExpNI _this = (RegExpNI)objthis.GetNativeInstance(Kirikiri.Tjs2.RegExpClass.mClassID
);
if (_this == null)
{
return Error.E_NATIVECLASSCRASH;
}
_this.mStart = param.AsInteger();
return Error.S_OK;
}
示例11: DeleteMemberByNum
// delete member by index number
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
public override int DeleteMemberByNum(int flag, int num, Dispatch2 objthis)
{
if (!GetValidity())
{
return Error.E_INVALIDOBJECT;
}
ArrayNI ni = (ArrayNI)objthis.GetNativeInstance(ArrayClass.ClassID);
if (ni == null)
{
return Error.E_NATIVECLASSCRASH;
}
if (num < 0)
{
num += ni.mItems.Count;
}
if (num < 0 || num >= ni.mItems.Count)
{
return Error.E_MEMBERNOTFOUND;
}
ni.mItems.Remove(num);
return Error.S_OK;
}
示例12: Get
public override int Get(Variant result, Dispatch2 objthis)
{
RegExpNI _this = (RegExpNI)objthis.GetNativeInstance(Kirikiri.Tjs2.RegExpClass.mClassID
);
if (_this == null)
{
return Error.E_NATIVECLASSCRASH;
}
result.Set(_this.mRightContext);
return Error.S_OK;
}
示例13: CreateNewByNum
// create new object by index number
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
public override int CreateNewByNum(int flag, int num, Holder<Dispatch2> result, Variant
[] param, Dispatch2 objthis)
{
if (!GetValidity())
{
return Error.E_INVALIDOBJECT;
}
ArrayNI ni = (ArrayNI)objthis.GetNativeInstance(ArrayClass.ClassID);
if (ni == null)
{
return Error.E_NATIVECLASSCRASH;
}
int membercount = ni.mItems.Count;
if (num < 0)
{
num = membercount + num;
}
if ((flag & Interface.MEMBERMUSTEXIST) != 0 && (num < 0 || membercount <= num))
{
return Error.E_MEMBERNOTFOUND;
}
Variant val = new Variant((membercount <= num || num < 0) ? VoidValue : ni.mItems
[num]);
return DefaultCreateNew(flag, val, result, param, objthis);
}
示例14: Process
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
protected internal override int Process(Variant result, Variant[] param, Dispatch2
objthis)
{
DictionaryNI ni = (DictionaryNI)objthis.GetNativeInstance(Kirikiri.Tjs2.DictionaryClass
.ClassID);
if (ni == null)
{
return Error.E_NATIVECLASSCRASH;
}
if (!ni.IsValid())
{
return Error.E_INVALIDOBJECT;
}
if (param.Length < 1)
{
return Error.E_BADPARAMCOUNT;
}
AList<Dispatch2> stack = new AList<Dispatch2>();
VariantClosure clo = param[0].AsObjectClosure();
if (clo.mObjThis != null)
{
ni.AssignStructure(clo.mObjThis, stack);
}
else
{
if (clo.mObject != null)
{
ni.AssignStructure(clo.mObject, stack);
}
else
{
throw new TJSException(Error.NullAccess);
}
}
return Error.S_OK;
}
示例15: AssignStructure
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
public virtual void AssignStructure(Dispatch2 dsp, AList<Dispatch2> stack)
{
// assign structured data from dsp
ArrayNI arrayni = (ArrayNI)dsp.GetNativeInstance(ArrayClass.ClassID);
if (arrayni != null)
{
// copy from array
stack.AddItem(dsp);
try
{
mItems.Clear();
int count = arrayni.mItems.Count;
for (int i = 0; i < count; i++)
{
Variant v = arrayni.mItems[i];
if (v.IsObject())
{
// object
Dispatch2 dsp1 = v.AsObject();
// determin dsp's object type
//DictionaryNI dicni = null;
//ArrayNI arrayni1 = null;
if (dsp1 != null && dsp1.GetNativeInstance(DictionaryClass.ClassID) != null)
{
//dicni = (DictionaryNI)ni.mValue;
// dictionary
bool objrec = false;
int scount = stack.Count;
for (int j = 0; j < scount; j++)
{
Dispatch2 d = stack[j];
if (d == dsp1)
{
// object recursion detected
objrec = true;
break;
}
}
if (objrec)
{
mItems.AddItem(new Variant());
}
else
{
// becomes null
Dispatch2 newobj = TJS.CreateDictionaryObject();
mItems.AddItem(new Variant(newobj, newobj));
DictionaryNI newni;
if ((newni = (DictionaryNI)newobj.GetNativeInstance(DictionaryClass.ClassID)) !=
null)
{
newni.AssignStructure(dsp1, stack);
}
}
}
else
{
if (dsp1 != null && dsp1.GetNativeInstance(ArrayClass.ClassID) != null)
{
// array
bool objrec = false;
int scount = stack.Count;
for (int j = 0; j < scount; j++)
{
Dispatch2 d = stack[j];
if (d == dsp1)
{
// object recursion detected
objrec = true;
break;
}
}
if (objrec)
{
mItems.AddItem(new Variant());
}
else
{
// becomes null
Dispatch2 newobj = TJS.CreateArrayObject();
mItems.AddItem(new Variant(newobj, newobj));
ArrayNI newni;
if ((newni = (ArrayNI)newobj.GetNativeInstance(ArrayClass.ClassID)) != null)
{
newni.AssignStructure(dsp1, stack);
}
}
}
else
{
// other object types
mItems.AddItem(v);
}
}
}
else
{
// others
//.........这里部分代码省略.........