Это должно работать, но иногда таблица Primeng не сталкивается с изменениями, внесенными в данные, поэтому, в этом случае, попробуйте этот сценарий -
onSave(newItem){
this.dataItems = []; // Refresh datatable data by set it yo e
this.dataItems= [newItem];
this.showMyDialog = false; //to hide the dialog.
}
Согласно предложению Eric, я решил его путем проверки ключа сам. В коде я хочу защитить, я добавляю следующий вызов,
EnsureAssemblyIsSignedByMyCompany( Assembly.GetCallingAssembly() );
Затем реализация того метода
/// <summary>
/// Ensures that the given assembly is signed by My Company or Microsoft.
/// </summary>
/// <param name="assembly"></param>
private static void EnsureAssemblyIsSignedByMyCompany( Assembly assembly )
{
if ( assembly == null )
throw new ArgumentNullException( "assembly" );
byte[] pubkey = assembly.GetName().GetPublicKeyToken();
if ( pubkey.Length == 0 )
throw new ArgumentException( "No public key token in assembly." );
StringBuilder builder = new StringBuilder();
foreach ( byte b in pubkey )
{
builder.AppendFormat( "{0:x2}", b );
}
string pkString = builder.ToString();
if ( pkString != "b77a5c561934e089" /* Microsoft */ &&
pkString != "abababababababab" /* Ivara */ )
{
throw new ArgumentException( "Assembly is not signed by My Company or Microsoft. You do not have permission to call this code." );
}
}
** Имена и ключи, измененные для защиты невинного. Любое сходство с настоящими именами или компаниями является просто совпадением.*
Как Joel указал, Вам не повезло относительно CAS. Однако Вы можете делать проверку сами в любом методе, который необходимо защитить при помощи блока. GetCallingAssembly () для получения ссылки на блок, содержащий код вызова, затем проверьте строгое имя на том блоке вручную.
См. эту статью:
http://blogs.msdn.com/ericlippert/archive/2008/10/06/preventing-third-party-derivation-part-two.aspx
Особенно эта часть:
В последних версиях.NET, "полное доверие означает полное доверие". Таким образом, полностью доверяемый код удовлетворяет все требования, включая требования вещей как "был подписан с этим ключом", был ли он на самом деле подписан или нет.
Разве это не смертельный дефект в системе безопасности? Нет. Полностью доверяемый код всегда имел способность сделать это, потому что полностью доверяемый код имеет способность управлять доказательством, связанным с данным блоком. Если можно управлять доказательством, то можно подделать блок, который похож на него, прибыл из Microsoft, без проблем. (И если у Вас уже есть злонамеренный код полного доверия в Вашем процессе затем, Вы уже проиграли - оно не должно являться олицетворением подписанных Microsoft блоков; это уже имеет власть делать независимо от того, что пользователь может сделать.)
По-видимому, разработчики .NET чувствовали, что этот атрибут не был очень эффективным для полного доверительного кода при.Net 1.x также.